程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c++-RegOpenKeyEx調用失敗返回5 ,管理員運行不管用 win7VS2013 請問怎麼回事?

c++-RegOpenKeyEx調用失敗返回5 ,管理員運行不管用 win7VS2013 請問怎麼回事?

編輯:編程綜合問答
RegOpenKeyEx調用失敗返回5 ,管理員運行不管用 win7VS2013 請問怎麼回事?

代碼
LONG lRegRet;
HLOCAL hLocal;
HKEY hKeyUser;
PTSTR pszEnvironmentName = NULL;
PTSTR pszEnvironmentValue = NULL;

pszEnvironmentName = (PTSTR)malloc(MAX_PATH * sizeof(TCHAR));
GetDlgItemText(hDlg, IDD_EDIT_NAME, pszEnvironmentName, MAX_PATH);

pszEnvironmentValue = (PTSTR)malloc(1024 * sizeof(TCHAR) * 3);
GetDlgItemText(hDlg, IDD_EDIT_VALUE, pszEnvironmentValue,
1024 * sizeof(TCHAR) * 3);

//修改用戶環境變量
lRegRet = RegOpenKeyEx(HKEY_CURRENT_USER, USER_ENVREG, KEY_ALL_ACCESS, 0, &hKeyUser);
if (lRegRet != ERROR_SUCCESS)
{
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS, NULL, lRegRet,
MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), (PTSTR)&hLocal, 0, NULL);

MessageBox(hDlg, (PCTSTR)LocalLock(hLocal), TEXT("錯誤"), MB_OK);
break;
}
RegSetValueEx(hKeyUser, pszEnvironmentName, 0, REG_SZ,
(const unsigned char *)pszEnvironmentValue,
wcslen(pszEnvironmentValue) + sizeof(TCHAR));
RegCloseKey(hKeyUser);
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)TEXT("Environment"));

//釋放分配的內存
free(pszEnvironmentValue);
free(pszEnvironmentName);

最佳回答:


找到原因了,RegOpenKeyEx函數的參數你寫倒了,第三位是ulOption保留,通常必須設置為0,第四位是samDesired用來設置對鍵訪問的權限,你剛好寫反了。

lRegRet = RegOpenKeyEx(HKEY_CURRENT_USER, USER_ENVREG, 0, KEY_ALL_ACCESS, &hKeyUser);
sinat_26818447
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved