在Visual C++ 6.0或5.0環境中新建一基於對話框的工程,設置了兩個命令按鈕,名爲“查詢用戶信息”和“修改用戶信息”,用來查詢和修改註冊表中用戶姓名和公司名稱。這裏須要指出的是,用戶的信息位於系統註冊表中 //HKEY_LOCAL_MACHINE//Software//Microsoft//Windows//CurrentVersion// 的位置,鍵值名RegisteredOwner和RegisteredOrganization分別表示用戶的姓名和用戶公司的名稱。
//讀取註冊表
void CRegistryView::OnButton1()
{
// TODO: Add your control notification handler code here
HKEY hKEY;
LPCTSTR path="Software//Microsoft//MS Setup (ACME)//User Info";
long ret=::RegOpenKeyEx(HKEY_CURRENT_USER,path, 0, KEY_READ,&hKEY);
if(ret!=ERROR_SUCCESS) //如果無法打開hKEY,則終止程序的執行
{
MessageBox("錯誤: 查詢無法打開有關的hKEY!");
return;
}
unsigned char tmp[256]="/0";
DWORD type=REG_SZ;
DWORD size=80;
ret=::RegQueryValueEx(hKEY,"DefName", NULL,&type,tmp,&size);
if(ret!=ERROR_SUCCESS)
{
MessageBox("錯誤:無法查詢有關註冊表信息!");
return;
}
CString tmpstring=CString(tmp);
AfxMessageBox(tmpstring);
::RegCloseKey(hKEY);
}
//寫入註冊表
void CRegistryView::OnButton2()
{
// TODO: Add your control notification handler code here
unsigned char tmp[256];
sprintf((char *)tmp,"%s","hello");
CString tmpstring=tmp;
HKEY hKEY;
DWORD type=REG_SZ;
DWORD size=tmpstring.GetLength()+1;
LPCTSTR path="Software//Microsoft//MS Setup (ACME)//User Info" ;
long ret=::RegOpenKeyEx(HKEY_CURRENT_USER,path,0,KEY_WRITE, &hKEY);
if(ret!=ERROR_SUCCESS)
{
MessageBox("錯誤: 修改無法打開有關的hKEY!");
return;
}
ret=::RegSetValueEx(hKEY,"DefName",NULL,type,tmp,size);
if(ret!=ERROR_SUCCESS)
{
MessageBox("錯誤: 無法修改有關註冊表信息!");
return;
}
::RegCloseKey(hKEY);
}
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/sinomac/archive/2007/02/23/1512967.aspx