如何清空当前程序注册表 麻烦各位写一点简单程序给我吧 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 注册表编程:http://apps.hi.baidu.com/share/detail/34850532递归删除注册表项://删除注册表项DWORD DeleteTree(HKEY RootKey, LPCTSTR pSubKey){ HKEY hKey; DWORD nRet; DWORD NameCnt,NameMaxLen; DWORD KeyCnt,KeyMaxLen,MaxDateLen; static TCHAR sFormat[256] = {0}; _tcscat_s(sFormat, _T("----")); static int dwDeep = 1; dwDeep++; nRet=RegOpenKeyEx(RootKey,pSubKey,0,KEY_ALL_ACCESS,&hKey); if(nRet!=ERROR_SUCCESS) { return 0; } nRet = RegQueryInfoKey(hKey,NULL,NULL,NULL,&KeyCnt,&KeyMaxLen,NULL,&NameCnt, &NameMaxLen,&MaxDateLen,NULL,NULL); if(nRet == ERROR_SUCCESS) { for(int dwIndex = KeyCnt - 1; dwIndex >= 0; dwIndex--) //枚举键值 { TCHAR sKeyName[256] = {0}; RegEnumKey(hKey, dwIndex, sKeyName, sizeof(sKeyName)); HKEY hKeySub; DWORD KeyCntSub; TCHAR pSubKeyTemp[256] = {}; _tcscpy_s(pSubKeyTemp, pSubKey); _tcscat_s(pSubKeyTemp, _T("\\")); _tcscat_s(pSubKeyTemp, sKeyName); nRet = RegOpenKeyEx(RootKey,pSubKeyTemp,0,KEY_ALL_ACCESS,&hKeySub); if(nRet == ERROR_SUCCESS) { nRet = RegQueryInfoKey(hKeySub,NULL,NULL,NULL,&KeyCntSub,&KeyMaxLen,NULL,&NameCnt, &NameMaxLen,&MaxDateLen,NULL,NULL); if(nRet == ERROR_SUCCESS) { if (KeyCntSub != 0) { DeleteTree(RootKey, pSubKeyTemp); } RegCloseKey(hKeySub); } } RegDeleteKey(RootKey ,pSubKeyTemp); } dwDeep--; if (dwDeep == 1) { RegDeleteKey(RootKey ,pSubKey); } RegCloseKey(hKey); } return 0;}这个不好办,因为不同的程序对注册表的操作不一样,有些程序可能在一些不常用的地方写注册表信息要是以程序名全局搜索,又怕误删绝大部分正规程序都要在固定位置写信息,你可以把这些删除掉至于什么位置,你随便找个程序看看就行了 如何写一个 vector,里面放3个string,并对string 分别初始化为"ass",0xff0ff,0x12 xml配置信息保存时,属性值怎样换行? 异步socket中,select模型的客户端连接服务器,如何判断是否连接成功? (请大家讨论)C++里面的构造函数为什么不可以为虚函数?(谢谢) vc与matlab接口编程的问题 发一个游戏的演示程序 windows串口读的问题 寻《MFC经典问答》中一个例子 高手进来! 打印问题请教!!急!!! vc++ ListCtrl显示大量数据时变灰引发的问题? VC2010有没有代码重构的功能?
DWORD DeleteTree(HKEY RootKey, LPCTSTR pSubKey)
{ HKEY hKey;
DWORD nRet;
DWORD NameCnt,NameMaxLen;
DWORD KeyCnt,KeyMaxLen,MaxDateLen;
static TCHAR sFormat[256] = {0};
_tcscat_s(sFormat, _T("----")); static int dwDeep = 1;
dwDeep++; nRet=RegOpenKeyEx(RootKey,pSubKey,0,KEY_ALL_ACCESS,&hKey);
if(nRet!=ERROR_SUCCESS)
{
return 0;
} nRet = RegQueryInfoKey(hKey,NULL,NULL,NULL,&KeyCnt,&KeyMaxLen,NULL,&NameCnt,
&NameMaxLen,&MaxDateLen,NULL,NULL);
if(nRet == ERROR_SUCCESS)
{
for(int dwIndex = KeyCnt - 1; dwIndex >= 0; dwIndex--) //枚举键值
{
TCHAR sKeyName[256] = {0};
RegEnumKey(hKey, dwIndex, sKeyName, sizeof(sKeyName)); HKEY hKeySub;
DWORD KeyCntSub;
TCHAR pSubKeyTemp[256] = {};
_tcscpy_s(pSubKeyTemp, pSubKey);
_tcscat_s(pSubKeyTemp, _T("\\"));
_tcscat_s(pSubKeyTemp, sKeyName); nRet = RegOpenKeyEx(RootKey,pSubKeyTemp,0,KEY_ALL_ACCESS,&hKeySub);
if(nRet == ERROR_SUCCESS)
{
nRet = RegQueryInfoKey(hKeySub,NULL,NULL,NULL,&KeyCntSub,&KeyMaxLen,NULL,&NameCnt,
&NameMaxLen,&MaxDateLen,NULL,NULL);
if(nRet == ERROR_SUCCESS)
{
if (KeyCntSub != 0)
{
DeleteTree(RootKey, pSubKeyTemp);
}
RegCloseKey(hKeySub);
}
}
RegDeleteKey(RootKey ,pSubKeyTemp);
}
dwDeep--;
if (dwDeep == 1)
{
RegDeleteKey(RootKey ,pSubKey);
}
RegCloseKey(hKey);
}
return 0;
}这个不好办,因为不同的程序对注册表的操作不一样,有些程序可能在一些不常用的地方写注册表信息
要是以程序名全局搜索,又怕误删绝大部分正规程序都要在固定位置写信息,你可以把这些删除掉
至于什么位置,你随便找个程序看看就行了