你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Linux开发
用MASM32编程获取并显示WinRAR的路径
 

;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; 文件名: rar_path.asm
; 功 能: 获取并显示WinRAR的路径
; 作 者: Purple Endurer
; 环 境: win 2K pro + masm32 V8
; log
;------------------------------------------------------------------------------------------
; 2006.03.24 创建
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
.386
.model flat, stdcall
option casemap:none
include masm32includewindows.inc
include masm32includeAdvapi32.inc
include masm32includekernel32.inc
include masm32includeuser32.inc
includelib masm32libAdvapi32.lib
includelib masm32libkernel32.lib
includelib masm32libuser32.lib
GetRarPath PROTO :LPSTR
m_m2m MACRO d1, d2
  push d2
  pop d1
ENDM
.data
g_szTitle   db "WinRAR路径", 0
g_szRegPath db "SOFTWAREMicrosoftWindowsCurrentVersionApp PathsWinRAR.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

(编辑:aniston)

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089