HKEY hd;
hd=HKEY_LOCAL_MACHINE;
char* Regkeyname="System\\CurrentControlSet\\Services\\aaaaaa";
char *sclass="";
DWORD nbf=0;
LONG ret=RegCreateKeyEx(hd,Regkeyname,0,sclass,REG_OPTION_NON_VOLATILE,
KEY_READ|KEY_WRITE,NULL,&hd,&nbf);
if (REG_OPENED_EXISTING_KEY == nbf)
{
//如果存在就删掉
RegCloseKey(hd);
ret=RegDeleteKey(HKEY_LOCAL_MACHINE,Regkeyname);/**********************/
//重新创建
RegCreateKeyEx(HKEY_LOCAL_MACHINE,Regkeyname,0,sclass,REG_OPTION_NON_VOLATILE,
KEY_READ|KEY_WRITE,NULL,&hd,&nbf);
}我用/**********************/标注的这一句结果返回是5,肯定是错了,就是没删掉,我想问问怎样才能删掉啊,完成功能很简单,就是创建指定的子键,如果存在就先删掉,然后再创建一下
hd=HKEY_LOCAL_MACHINE;
char* Regkeyname="System\\CurrentControlSet\\Services\\aaaaaa";
char *sclass="";
DWORD nbf=0;
LONG ret=RegCreateKeyEx(hd,Regkeyname,0,sclass,REG_OPTION_NON_VOLATILE,
KEY_READ|KEY_WRITE,NULL,&hd,&nbf);
if (REG_OPENED_EXISTING_KEY == nbf)
{
//如果存在就删掉
RegCloseKey(hd);
ret=RegDeleteKey(HKEY_LOCAL_MACHINE,Regkeyname);/**********************/
//重新创建
RegCreateKeyEx(HKEY_LOCAL_MACHINE,Regkeyname,0,sclass,REG_OPTION_NON_VOLATILE,
KEY_READ|KEY_WRITE,NULL,&hd,&nbf);
}我用/**********************/标注的这一句结果返回是5,肯定是错了,就是没删掉,我想问问怎样才能删掉啊,完成功能很简单,就是创建指定的子键,如果存在就先删掉,然后再创建一下
DWORD SHDeleteKey(HKEY hkey,LPCTSTR pszSubKey);Header shlwapi.h
Import library shlwapi.lib
RegDeleteKey
The RegDeleteKey function deletes a subkey. Windows 95/98/Me: The function also deletes all subkeys and values. To delete a key only if the key has no subkeys or values, use the SHDeleteEmptyKey function. Windows NT/2000 or later: The subkey to be deleted must not have subkeys. To delete a key and all its subkeys, you need to recursively enumerate the subkeys and delete them individually. To recursively delete keys, use the SHDeleteKey function. LONG RegDeleteKey(
HKEY hKey, // handle to open key
LPCTSTR lpSubKey // subkey name
);
Parameters
hKey
[in] Handle to a currently open key or one of the following predefined reserved handle values:
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT/2000 or later: HKEY_PERFORMANCE_DATA
Windows 95/98/Me: HKEY_DYN_DATA The key specified by the lpSubKey parameter must be a subkey of the key identified by hKey. lpSubKey
[in] Pointer to a null-terminated string specifying the name of the key to delete. This parameter cannot be NULL.
Windows NT/2000 or later: The specified key must not have subkeys.
改成这样RegDeleteKey(hd,Regkeyname);也删不掉啊,给个例子成不
RegDeleteKey必须子键为空,就像删除目录一样,子目录必须为空,可以用递归的方法也能实现删除。