vs2008环境下MFC对注册表的读写操作
?? ? ?最近修改一個在vs2008環境下的MFC project,其中用到對注冊表的讀寫操作,雖然在網上down了不少代碼也查閱了不少文章,但運行始終存在不少問題,現把我運行成功的代碼分享出來,希望對有需要的有些幫助,代碼如下:
?
代碼是在HKEY_LOCAL_MACHINE//Software//Microsoft//Windows//CurrentVersion//Run下添加一條開機自動運行的exe文件。
?
//寫注冊表
void CDevListDlg::WriteRegedit() { HKEY sub; TCHAR bufname[MAX_PATH*2]={0}; GetModuleFileName(0,bufname,MAX_PATH); CString str; str.Format(TEXT("%s"),bufname); CString skey=TEXT("Software//Microsoft//Windows//CurrentVersion//Run"); wchar_t *commStr =str.AllocSysString(); RegCreateKey(HKEY_LOCAL_MACHINE,skey,&sub); long iRet = RegSetValueEx(sub,TEXT("DeviceList"),NULL,REG_SZ,(const BYTE*)commStr,MAX_PATH*2); if(ERROR_SUCCESS == iRet) { MessageBox(TEXT("Add Regedit Success!"),NULL,MB_OK); } }
?
//把上面寫入的刪除掉
?
void CDevListDlg::DeleteRegVal()
{
HKEY hKey;
LPCTSTR lpRun = TEXT("Software//Microsoft//Windows//CurrentVersion//Run");
long lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,lpRun,0,KEY_WRITE,&hKey);
?
if(lRet == ERROR_SUCCESS)
{
lRet = RegDeleteValue(hKey, TEXT("DeviceList"));
if(ERROR_SUCCESS == lRet)
{
MessageBox(TEXT("Delete Regedit Success!"),NULL,MB_OK);
}
RegCloseKey(hKey);
}
?
}
//讀注冊表花了我很長時間
long CDevListDlg::OnQuery() { UpdateData(true); HKEY hKey; DWORD KeyType; DWORD DataSize; LPCTSTR data_set = TEXT("Software//Microsoft//Windows//CurrentVersion//Run"); long ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_set,0,KEY_READ,&hKey)); if(ret0!=ERROR_SUCCESS) { AfxMessageBox(TEXT("Error:cannot open hKEY")); } long ret1= RegQueryValueEx(hKey,L"DeviceList",0,&KeyType,NULL,&DataSize); if(ret1==ERROR_SUCCESS) { return ret1; } RegCloseKey(hKey); UpdateData(false); return -1; }
?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的vs2008环境下MFC对注册表的读写操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何在DB2安装重启后登陆Adminis
- 下一篇: 设置对话框显示位置