⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rar_path.asm.txt

📁 用MASM32编程获取并显示WinRAR的路径
💻 TXT
字号:
.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

m_m2m MACRO d1, d2
    push d2
    pop d1
ENDM


.data
g_szTitle       db "WinRAR路径", 0
g_szRegPath db  "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe", 0
g_szFailRegOpenKeyEx  db "RegOpenKeyEx失败!", 0
g_szFailRegQueryValueEx db "RegQueryValueEx失败!", 0
g_szValueName db "Path", 0

.data?
g_szRarPath  db 256 dup(?)
g_hRegKey4IE   HKEY    ?

.code
start:
        invoke GetRarPath, ADDR g_szRarPath
        .if eax==1
            mov eax, OFFSET g_szFailRegOpenKeyEx
        .elseif eax==2
            mov eax, OFFSET g_szFailRegQueryValueEx
        .else
            mov eax, OFFSET g_szRarPath
        .endif
        invoke MessageBox, NULL, eax, OFFSET g_szTitle, MB_OK

        invoke ExitProcess,NULL

GetRarPath PROC lpszRarPath: LPSTR
    LOCAL dwcbData: dword
;         LONG RegOpenKey(
;             HKEY hKey,    // handle of open key 
;             LPCTSTR lpSubKey,    // address of name of subkey to open 
;             PHKEY phkResult     // address of handle of open key 
;         );

    invoke  RegOpenKey, HKEY_LOCAL_MACHINE, ADDR g_szRegPath, ADDR g_hRegKey4IE
    .if eax!=ERROR_SUCCESS
        m_m2m eax, 1
        ret
    .endif

;     LONG RegQueryValueEx(
;         HKEY hKey,          // 1.handle of key to query 
;         LPTSTR lpValueName, // 2.address of name of value to query 
;         LPDWORD lpReserved, // 3.reserved 
;         LPDWORD lpType,     // 4.address of buffer for value type 
;         LPBYTE lpData,      // 5.address of data buffer 
;         LPDWORD lpcbData    // 6.address of data buffer size 
;     );

    m_m2m dwcbData, SIZEOF g_szRarPath
    invoke RegQueryValueEx, g_hRegKey4IE, ADDR g_szValueName, NULL, NULL, ADDR g_szRarPath, ADDR dwcbData

    .if eax!=ERROR_SUCCESS
        m_m2m eax, 2
    .else
        xor eax, eax
    .endif

; LONG RegCloseKey(
;     HKEY hKey     // handle of key to close  
; );
    invoke RegCloseKey, g_hRegKey4IE

    ret
GetRarPath ENDP

end start  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -