无法使用C++程序禁用设备管理器

Can not disable Device Manager using a C++ program

本文关键字:管理器 C++ 程序      更新时间:2023-10-16

我想从控制面板禁用设备管理器编辑注册表值。我可以在C#中完成,但我想在C++中完成,而不使用任何.NET框架。我已经成功地用C++更改了我的处理器名称。但是当我想禁用任务管理器时,我遇到了一个问题。这是我的密码。

    HKEY hKey;
    RegOpenKeyEx(HKEY_LOCAL_MACHINE,
                 "HARDWARE\DESCRIPTION\System\CentralProcessor\0",
                 0,
                 KEY_SET_VALUE,
                 &hKey);
    RegSetValueEx(hKey, REGNAME_TO_WRITE, 0, REG_SZ,
                  (const unsigned char *)"ProcessorNameString",
                  strlen("ProcessorNameString"));
    //RegCloseKey(hKey);
    // The problem begins here
     RegOpenKeyEx( HKEY_LOCAL_MACHINE,
                  "Software\Policies\MicrosoftMMC\{74246bfc-4c96-11d0-abef-0020af6b0b7a}\",
                  0,
                  KEY_SET_VALUE,
                  &hKey );
    RegSetValueEx( hKey,"Restrict_Run",0,REG_SZ,
                   (const unsigned char *)"1",
                   strlen("1") );
    RegCloseKey(hKey);
    return 0;
}

您应该禁用WOW64注册表重定向,否则您的程序可能会更改WOW6432Node而不是HKEY_LOCAL_MACHINE。

请参阅禁用x64平台上注册表项的注册表重定向

Viola,我得到了解决方案。解决方案如下:

DWORD dwVal = 1;
HKEY hKey = HKEY_CURRENT_USER;
RegOpenKeyEx(HKEY_CURRENT_USER, "Software\Policies\Microsoft\MMC\{74246bfc-4c96-11d0-abef-0020af6b0b7a}\", 0, KEY_ALL_ACCESS, &hKey);
RegSetValueEx (hKey, "Restrict_Run", 0, REG_DWORD, (LPBYTE)&dwVal, sizeof(DWORD));
RegCloseKey(hKey);