windows - Kan ikke deaktivere Enhedshåndtering ved hjælp af et C ++-program

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil deaktivere Enhedshåndtering fra mine kontrolpanelets redigering af registreringsværdier. Jeg kan gøre det i C #, men jeg vil gerne gøre det i C ++ uden at bruge nogen. NET framework. Jeg har succedded at ændre min processor navn i C ++. Men jeg står over for et problem, når jeg vil deaktivere task manager. Her er min kode. [3]


    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;
}

Bedste reference


Du skal deaktivere WOW64-registreringsdatabasen omdirigering, ellers kan dit program ændre WOW6432Node i stedet for HKEY\_LOCAL\_MACHINE.


Se Deaktivering af registreringsdatabasen omdirigering til en registreringsnøgle på en x64-platform

Andre referencer 1


Viola, jeg fik løsningen. Løsningen ville være sådan:


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);