[セットトップ]C++読み書きレジストリ
一、説明:レジストリはWindowsの重要な構成部分であり、レジストリにはコンピュータのソフト・ハードウェアに関する情報が大量に記録されている.レジストリの値は、その名前で識別されます.値名はキー名と同じ文字で構成されます.値自体は、文字列、バイナリデータ、または32ビットの符号なし値であってもよい.ここでは主に以下のテクニックを用います:(一)、事前定義されたレジストリキー.レジストリには、いくつかの事前定義キーが含まれています. HKEY_LOCAL_MACHINEには、コンピュータおよびその構成を記述するエントリが含まれます.プロセッサー、マザーボード、メモリ、インストール済みソフトウェア、ハードウェアに関する情報が含まれます. HKEY_CLASSES_ROOTは、ドキュメントタイプやOLECOMに関する情報のサポートキーです.このキーはHKEY_LOCAL_MACHINEの依存キー. HKEY_USERSはデフォルトのユーザープリファレンスとして使用され、単一のユーザーのプリファレンスとしても使用されます. HKEY_CLASSES_USERは、現在(ログイン)しているユーザに関する情報です. HKEY_CURRENT_CONFIGには、現在のシステム構成の情報が含まれています. にはもう1つありますが、一般的には現れません.構成されたローカルエリアネットワークの後にしかありません.
(二)、CRegKeyクラス及び主な使用と関数の説明必要なヘッダファイル:atlbase.h 共通関数 二、例: AppWizardによりダイアログベースのプログラムRegedit を作成する.には、レジストリ内のユーザー名と会社名を照会および変更するための「クエリー」(ID_QUERY)と「修正」(ID_CHANGE)という2つのコマンドボタンが設定されています.注意:情報位置9 xシリーズ:HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrntVersion NTシリーズ:HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrntVersionキー値:RegisteredOwnertkgとRegisteredOrganizationはそれぞれユーザー名と会社名 を表します.は、情報を表示および変更するための2つの編集ボックスを設定する.2つのCString変数m_を定義strOwner,m_Company. 「クエリー」ボタンコードは次のとおりです: 「設定」ボタンコードは以下の通りである: 参照関数 三、注意:以上のコードはWindows NT/2000/XPでしか通過できません.Windows 9 X/MeではレジストリパスのWindows NTをWindowsに変更してください.本プログラムのソースコードはWindows 2000+VC 6である.0でテストに合格しました.本プログラムのソースサンプルファイルはWindows NT/2000/XPでのみ使用できます.Windows 9 X/Meでは修正して使用してください.
(二)、CRegKeyクラス及び主な使用と関数の説明
☆ :RegOpenKeyEx
:LONG RegOpenKeyEx(HKEY hKey,// ,
LPCTSTR lpSubKey,//
DWORD ulOptions,// , 0
REGSAM samDesired,// ,
PHKEY phkResult//
);
☆ :RegQueryValueEx
:LONG RegQueryValueEx(HKEY hKey,//
LPCTSTR lpValueName,//
LPDWORD lpReserved,//
LPDWORD lpType,//
LPBYTE lpData,//
LPDWORD lpcbData//
);
☆ RegSetValueEx
:LONG RegSetValueEx(HKEY hKey,//
LPCTSTR lpValueName,//
LPDWORD lpReserved,//
DWORD dwType,//
const BYTE *lpData,//
DWORD cbData//
);
void CRegeditDlg::OnQuery()
{
UpdateData(true);
HKEY hKEY;// hKEY,
// data_Set hKEY
LPCTSTR data_Set="Software\\Microsoft\\Windows NT\\CurrentVersion\\";
// ,hKEY
long ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set,0,KEY_READ,&hKEY));
if(ret0!=ERROR_SUCCESS)// hKEY,
{
AfxMessageBox(" : hKEY");
return;
}
//
LPBYTE owner_Get=new BYTE[80];// owner_Get
DWORD type_1=REG_SZ;//
DWORD cbData_1=80;//
long ret1=::RegQueryValueEx(hKEY,"RegisteredOwner",NULL,&type_1,owner_Get,&cbData_1);
if(ret1!=ERROR_SUCCESS)
{
AfxMessageBox(" : ");
return;
}
//
LPBYTE company_Get=new BYTE[80];// company_Get
DWORD type_2=REG_SZ;//
DWORD cbData_2=80;//
long ret2=::RegQueryValueEx(hKEY,"RegisteredOrganization",NULL,&type_2,company_Get,&cbData_2);
if(ret2!=ERROR_SUCCESS)
{
AfxMessageBox(" : ");
return;
}
//
m_strOwner=CString(owner_Get);
m_strCompany=CString(company_Get);
delete[] owner_Get;
delete[] company_Get;
// , hKEY
::RegCloseKey(hKEY);
UpdateData(false);
}
void CRegeditDlg::OnModify()
{
UpdateData(true);
HKEY hKEY;// hKEY,
// data_Set hKEY
LPCTSTR data_Set="Software\\Microsoft\\Windows NT\\CurrentVersion\\";
// ,hKEY
long ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set,0,KEY_READ,&hKEY));
if(ret0!=ERROR_SUCCESS)// hKEY,
{
AfxMessageBox(" : hKEY");
return;
}
//
//CString_To_LPBYTE,
LPBYTE owner_Set=CString_To_LPBYTE(m_strOwner);// owner_Set
DWORD type_1=REG_SZ;//
DWORD cbData_1=m_strOwner.GetLength()+1;//
long ret1=::RegSetValueEx(hKEY,"RegisteredOwner",NULL,type_1,owner_Set,cbData_1);
if(ret1!=ERROR_SUCCESS)
{
AfxMessageBox(" : ");
return;
}
//
LPBYTE company_Set=CString_To_LPBYTE(m_strCompany);// company_Set
DWORD type_2=REG_SZ;//
DWORD cbData_2=m_strCompany.GetLength()+1;//
long ret2=::RegSetValueEx(hKEY,"RegisteredOrganization",NULL,type_2,company_Set,cbData_2);
if(ret2!=ERROR_SUCCESS)
{
AfxMessageBox(" : ");
return;
}
else
{
AfxMessageBox(" ");
}
// , hKEY
::RegCloseKey(hKEY);
UpdateData(false);
}
LPBYTE CString_To_LPBYTE(CString str)
{
LPBYTE lpb=new BYTE[str.GetLength()+1];
for(int i=0;i<str.GetLength();i++)
lpb[i]=str[i];
lpb[str.GetLength()]=0;
return lpb;
}