zoukankan      html  css  js  c++  java
  • VC常用代码之通过注册表寻找应用程序路径

    很多时候在调用一些应用程序之前需要先找到应用程序的路径。使用CFileFind类效率较低,如果要寻找一些已经在注册表标明路径的应用程序,通过注册表来寻找不失为一个便捷的途径。下面就是通过注册表寻找应用程序路径的相关代码(以寻找Rar.exe为例,Rar.exeWinRar的控制台程序):

     

     

    1.  // 打开键
    2.     HKEY hKEY;
    3.     LPCTSTR Rgspath = "WinRAR//shell//open//command";
    4.     LONG ret = RegOpenKeyEx(HKEY_CLASSES_ROOT, Rgspath, 0, KEY_READ, &hKEY);
    5.     
    6.     if(ret != ERROR_SUCCESS)
    7.     { 
    8.         RegCloseKey(hKEY);
    9.         return FALSE;
    10.     }
    11.     // 读取键值内容
    12.     DWORD dwInfoSize;
    13.     DWORD type = REG_SZ;
    14.     BYTE UserInfo[255];
    15.     // zjc 08.04.24 added begin
    16.     /*
    17.     注意RegQueryValueEx最后一个参数是个双向参数,入参时表示的是前一个参数的缓冲区大小,出参时表示的是返回的大小。
    18.     所以最好把UserInfo的大小给dwInfoSize,防止UserInfo溢出。
    19.     */
    20.     dwInfoSize = sizeof(UserInfo)/sizeof(BYTE); 
    21.     
    22.     ret = RegQueryValueEx(hKEY, NULL, NULL, &type, UserInfo, &dwInfoSize);
    23.     if(ret!=ERROR_SUCCESS)
    24.     { 
    25.         LPVOID lpMsgBuf;
    26.         DWORD dw = GetLastError(); 
    27.         
    28.         FormatMessage(
    29.             FORMAT_MESSAGE_ALLOCATE_BUFFER | 
    30.             FORMAT_MESSAGE_FROM_SYSTEM,
    31.             NULL,
    32.             dw,
    33.             MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
    34.             (LPTSTR) &lpMsgBuf,
    35.             0, NULL );  
    36.         MessageBox((LPCTSTR)lpMsgBuf, "系统错误", MB_OK|MB_ICONSTOP); 
    37.         LocalFree(lpMsgBuf);    
    38.         RegCloseKey(hKEY);
    39.         return FALSE;
    40.     }
    41.     
    42.     CString csRarAppPath;
    43.     csRarAppPath.Format("%s",UserInfo);
    44.     int nCount = csRarAppPath.ReverseFind('//');
    45.     csRarAppPath = csRarAppPath.Mid(0,nCount);
    46.     // 关闭键
    47.     RegCloseKey(hKEY);
  • 相关阅读:
    浅读《构建之法》随笔
    个人学期总结
    201571030305/201571030306《小学生四则运算需求分析结对报告》
    小学生四则运算结对项目
    小学生四则运算
    读《构建之法》提出的问题
    个人学期总结
    实验四 小学生四则运算需求分析结对报告
    四则运算结对项目
    四则运算 201571030317
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6471199.html
Copyright © 2011-2022 走看看