麻烦各位写一点简单程序给我吧

解决方案 »

  1.   

    注册表编程: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;
    }这个不好办,因为不同的程序对注册表的操作不一样,有些程序可能在一些不常用的地方写注册表信息
    要是以程序名全局搜索,又怕误删绝大部分正规程序都要在固定位置写信息,你可以把这些删除掉
    至于什么位置,你随便找个程序看看就行了