![]() ![]() |
|
C技巧(通过注册表寻找应用程序路径) | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/11/1 20:40:22 文章录入:杜斌 责任编辑:杜斌 | |
|
|
// 打开键 HKEY hKEY; LPCTSTR Rgspath = "WinRAR\\shell\\open\\command"; LONG ret = RegOpenKeyEx(HKEY_CLASSES_ROOT, Rgspath, 0, KEY_READ, &hKEY); if(ret != ERROR_SUCCESS) { RegCloseKey(hKEY); return FALSE; } // 读取键值内容 DWORD dwInfoSize; DWORD type = REG_SZ; BYTE UserInfo[255]; // zjc 08.04.24 added begin /* 注意RegQueryValueEx最后一个参数是个双向参数,入参时表示的是前一个参数的缓冲区大小,出参时表示的是返回的大小。 所以最好把UserInfo的大小给dwInfoSize,防止UserInfo溢出。 */ dwInfoSize = sizeof(UserInfo)/sizeof(BYTE); ret = RegQueryValueEx(hKEY, NULL, NULL, &type, UserInfo, &dwInfoSize); if(ret!=ERROR_SUCCESS) { LPVOID lpMsgBuf; DWORD dw = GetLastError(); FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL ); MessageBox((LPCTSTR)lpMsgBuf, "系统错误", MB_OK|MB_ICONSTOP); LocalFree(lpMsgBuf); RegCloseKey(hKEY); return FALSE; } CString csRarAppPath; csRarAppPath.Format("%s",UserInfo); int nCount = csRarAppPath.ReverseFind('\\'); csRarAppPath = csRarAppPath.Mid(0,nCount); // 关闭键 RegCloseKey(hKEY); www.Examda.CoM |
|
![]() ![]() |