;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;文件名:rar_path.asm
;功 能:获取并显示WinRAR的路径
;作 者:PurpleEndurer
;环 境:win2Kpro+masm32 V8
;log
;------------------------------------------------------------------------------------------
;2006.03.24创建
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
.386
.model flat, stdcall
option casemap: none
include/masm32/ include/windows.inc
include/masm32/ include/Advapi32.inc
include/masm32/ include/kernel32.inc
include/masm32/ include/user32.inc
includelib/masm32/ lib/Advapi32.lib
includelib/masm32/ lib/kernel32.lib
includelib/masm32/ lib/user32.lib
GetRarPath PROTO:LPSTR,: DWORD
m_m2m MACROd1,d2
pushd2
popd1
ENDM
.data
g_szTitle db "WinRAR路径",0
g_szRegPath db "SOFTWARE/Microsoft/Windows/CurrentVersion/AppPaths/WinRAR.exe",0
g_szFailRegOpenKeyEx db "RegOpenKeyEx失败!",0
g_szFailRegQueryValueEx db "RegQueryValueEx失败!",0
g_szPath db "Path",0
.data?
g_szRarPath db256dup(?)
g_hRegKey4RARHKEY?
.code
start:
invokeGetRarPath, ADDRg_szRarPath,SIZEOFg_szRarPath
.if eax==1
mov eax, OFFSETg_szFailRegOpenKeyEx
.elseif eax==2
mov eax, OFFSETg_szFailRegQueryValueEx
.else
mov eax, OFFSETg_szRarPath
.endif
invokeMessageBox,NULL, eax, OFFSETg_szTitle,MB_OK
invokeExitProcess,NULL
GetRarPath PROClpszRarPath:LPSTR,dwBufLen: DWORD
LOCALdwcbData: dword
;LONGRegOpenKey(
;HKEYhKey,//handleofopenkey
;LPCTSTRlpSubKey,//addressofnameofsubkeytoopen
;PHKEYphkResult//addressofhandleofopenkey
;);
invokeRegOpenKey,HKEY_LOCAL_MACHINE, ADDRg_szRegPath, ADDRg_hRegKey4RAR
.if eax!=ERROR_SUCCESS
m_m2m eax,1
ret
.endif
;LONGRegQueryValueEx(
;HKEYhKey,//1.handleofkeytoquery
;LPTSTRlpValueName,//2.addressofnameofvaluetoquery
;LPDWORDlpReserved,//3.reserved
;LPDWORDlpType,//4.addressofbufferforvaluetype
;LPBYTElpData,//5.addressofdatabuffer
;LPDWORDlpcbData//6.addressofdatabuffersize
;);
m_m2mdwcbData,dwBufLen
invokeRegQueryValueEx,g_hRegKey4RAR, ADDRg_szPath,NULL,NULL,lpszRarPath, ADDRdwcbData
.if eax!=ERROR_SUCCESS
m_m2m eax,2
.else
xor eax, eax
.endif
;LONGRegCloseKey(
;HKEYhKey//handleofkeytoclose
;);
invokeRegCloseKey,g_hRegKey4RAR
ret
GetRarPath ENDP
endstart
;文件名:rar_path.asm
;功 能:获取并显示WinRAR的路径
;作 者:PurpleEndurer
;环 境:win2Kpro+masm32 V8
;log
;------------------------------------------------------------------------------------------
;2006.03.24创建
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
.386
.model flat, stdcall
option casemap: none
include/masm32/ include/windows.inc
include/masm32/ include/Advapi32.inc
include/masm32/ include/kernel32.inc
include/masm32/ include/user32.inc
includelib/masm32/ lib/Advapi32.lib
includelib/masm32/ lib/kernel32.lib
includelib/masm32/ lib/user32.lib
GetRarPath PROTO:LPSTR,: DWORD
m_m2m MACROd1,d2
pushd2
popd1
ENDM
.data
g_szTitle db "WinRAR路径",0
g_szRegPath db "SOFTWARE/Microsoft/Windows/CurrentVersion/AppPaths/WinRAR.exe",0
g_szFailRegOpenKeyEx db "RegOpenKeyEx失败!",0
g_szFailRegQueryValueEx db "RegQueryValueEx失败!",0
g_szPath db "Path",0
.data?
g_szRarPath db256dup(?)
g_hRegKey4RARHKEY?
.code
start:
invokeGetRarPath, ADDRg_szRarPath,SIZEOFg_szRarPath
.if eax==1
mov eax, OFFSETg_szFailRegOpenKeyEx
.elseif eax==2
mov eax, OFFSETg_szFailRegQueryValueEx
.else
mov eax, OFFSETg_szRarPath
.endif
invokeMessageBox,NULL, eax, OFFSETg_szTitle,MB_OK
invokeExitProcess,NULL
GetRarPath PROClpszRarPath:LPSTR,dwBufLen: DWORD
LOCALdwcbData: dword
;LONGRegOpenKey(
;HKEYhKey,//handleofopenkey
;LPCTSTRlpSubKey,//addressofnameofsubkeytoopen
;PHKEYphkResult//addressofhandleofopenkey
;);
invokeRegOpenKey,HKEY_LOCAL_MACHINE, ADDRg_szRegPath, ADDRg_hRegKey4RAR
.if eax!=ERROR_SUCCESS
m_m2m eax,1
ret
.endif
;LONGRegQueryValueEx(
;HKEYhKey,//1.handleofkeytoquery
;LPTSTRlpValueName,//2.addressofnameofvaluetoquery
;LPDWORDlpReserved,//3.reserved
;LPDWORDlpType,//4.addressofbufferforvaluetype
;LPBYTElpData,//5.addressofdatabuffer
;LPDWORDlpcbData//6.addressofdatabuffersize
;);
m_m2mdwcbData,dwBufLen
invokeRegQueryValueEx,g_hRegKey4RAR, ADDRg_szPath,NULL,NULL,lpszRarPath, ADDRdwcbData
.if eax!=ERROR_SUCCESS
m_m2m eax,2
.else
xor eax, eax
.endif
;LONGRegCloseKey(
;HKEYhKey//handleofkeytoclose
;);
invokeRegCloseKey,g_hRegKey4RAR
ret
GetRarPath ENDP
endstart