;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;文件名:rar_path.asm
;功 能:获取并显示WinRAR的路径
;作 者:PurpleEndurer
;环 境:win2Kpro+masm32 V8
;log
;------------------------------------------------------------------------------------------
;2006.03.24创建
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
.386
.modelflat,stdcall
optioncasemap: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
GetRarPathPROTO:LPSTR,:DWORD
m_m2mMACROd1,d2
pushd2
popd1
ENDM
.data
g_szTitledb"WinRAR路径",0
g_szRegPathdb"SOFTWARE/Microsoft/Windows/CurrentVersion/AppPaths/WinRAR.exe",0
g_szFailRegOpenKeyExdb"RegOpenKeyEx失败!",0
g_szFailRegQueryValueExdb"RegQueryValueEx失败!",0
g_szPathdb"Path",0
.data?
g_szRarPathdb256dup(?)
g_hRegKey4RARHKEY?
.code
start:
invokeGetRarPath,ADDRg_szRarPath,SIZEOFg_szRarPath
.ifeax==1
moveax,OFFSETg_szFailRegOpenKeyEx
.elseifeax==2
moveax,OFFSETg_szFailRegQueryValueEx
.else
moveax,OFFSETg_szRarPath
.endif
invokeMessageBox,NULL,eax,OFFSETg_szTitle,MB_OK
invokeExitProcess,NULL
GetRarPathPROClpszRarPath:LPSTR,dwBufLen:DWORD
LOCALdwcbData:dword
;LONGRegOpenKey(
;HKEYhKey,//handleofopenkey
;LPCTSTRlpSubKey,//addressofnameofsubkeytoopen
;PHKEYphkResult//addressofhandleofopenkey
;);
invokeRegOpenKey,HKEY_LOCAL_MACHINE,ADDRg_szRegPath,ADDRg_hRegKey4RAR
.ifeax!=ERROR_SUCCESS
m_m2meax,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
.ifeax!=ERROR_SUCCESS
m_m2meax,2
.else
xoreax,eax
.endif
;LONGRegCloseKey(
;HKEYhKey//handleofkeytoclose
;);
invokeRegCloseKey,g_hRegKey4RAR
ret
GetRarPathENDP
endstart
;文件名:rar_path.asm
;功 能:获取并显示WinRAR的路径
;作 者:PurpleEndurer
;环 境:win2Kpro+masm32 V8
;log
;------------------------------------------------------------------------------------------
;2006.03.24创建
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
.386
.modelflat,stdcall
optioncasemap: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
GetRarPathPROTO:LPSTR,:DWORD
m_m2mMACROd1,d2
pushd2
popd1
ENDM
.data
g_szTitledb"WinRAR路径",0
g_szRegPathdb"SOFTWARE/Microsoft/Windows/CurrentVersion/AppPaths/WinRAR.exe",0
g_szFailRegOpenKeyExdb"RegOpenKeyEx失败!",0
g_szFailRegQueryValueExdb"RegQueryValueEx失败!",0
g_szPathdb"Path",0
.data?
g_szRarPathdb256dup(?)
g_hRegKey4RARHKEY?
.code
start:
invokeGetRarPath,ADDRg_szRarPath,SIZEOFg_szRarPath
.ifeax==1
moveax,OFFSETg_szFailRegOpenKeyEx
.elseifeax==2
moveax,OFFSETg_szFailRegQueryValueEx
.else
moveax,OFFSETg_szRarPath
.endif
invokeMessageBox,NULL,eax,OFFSETg_szTitle,MB_OK
invokeExitProcess,NULL
GetRarPathPROClpszRarPath:LPSTR,dwBufLen:DWORD
LOCALdwcbData:dword
;LONGRegOpenKey(
;HKEYhKey,//handleofopenkey
;LPCTSTRlpSubKey,//addressofnameofsubkeytoopen
;PHKEYphkResult//addressofhandleofopenkey
;);
invokeRegOpenKey,HKEY_LOCAL_MACHINE,ADDRg_szRegPath,ADDRg_hRegKey4RAR
.ifeax!=ERROR_SUCCESS
m_m2meax,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
.ifeax!=ERROR_SUCCESS
m_m2meax,2
.else
xoreax,eax
.endif
;LONGRegCloseKey(
;HKEYhKey//handleofkeytoclose
;);
invokeRegCloseKey,g_hRegKey4RAR
ret
GetRarPathENDP
endstart