レジストリ・エントリの作成と削除



//レジストリ・キーの作成
void CRegAddEntryDlg::OnButton1() 
{
	HKEY RegKey;
	DWORD dwDisposition;
	char cData[256];
	DWORD cbData;

	//レジストリ・キーを開く
	LONG Result = RegCreateKeyEx(HKEY_CURRENT_USER,
		"Software\\TEST",0 ,NULL, REG_OPTION_NON_VOLATILE,
		KEY_ALL_ACCESS, NULL , &RegKey, &dwDisposition);

	if(Result == ERROR_SUCCESS){

		//--------------------------------------
		//エントリを作成する
		strcpy(cData, "TEST");
		cbData = 256;
		LONG Result = RegSetValueEx(RegKey, "Name", 0, REG_SZ,
			                      (const unsigned char*)cData, cbData);
		
		if(Result == ERROR_SUCCESS){
			AfxMessageBox("エントリを作成しました。");
		}
		else{
			AfxMessageBox("エントリの作成に失敗しました。");
		}

		//レジストリを閉じる
		RegCloseKey(RegKey);
	}
}

//エントリを削除する
void CRegAddEntryDlg::OnButton3() 
{
	HKEY RegKey;

	//レジストリのキーを開く
	LONG Result = RegOpenKeyEx(HKEY_CURRENT_USER,
		"Software\\TEST",0 ,KEY_ALL_ACCESS , &RegKey);

	if( Result == ERROR_SUCCESS){

		//エントリを削除する
		LONG Result = RegDeleteValue(RegKey, "Name");

		if(Result == ERROR_SUCCESS){
			AfxMessageBox("エントリの削除に成功しました。");
		}
		else{
			AfxMessageBox("エントリの削除に失敗しました。");
		}
	}
}

//レジストリ・キーの削除
void CRegAddEntryDlg::OnButton2() 
{
	//レジストリ・キー(HKEY_CURRENT_USER\\Software\\TEST)を削除
	LONG Result = RegDeleteKey(HKEY_CURRENT_USER, "Software\\TEST");
	
	if(Result == ERROR_SUCCESS){
		AfxMessageBox("キーを正常に削除しました。");
	}
	else{
		AfxMessageBox("キーを削除できませんでした。");
	}	
}