Delen via


Process-Wide Beveiliging instellen via het register

Als u de beveiliging voor een heel proces wilt instellen, is één oplossing om de gewenste beveiligingsniveaus in het register in te stellen. Als uw toepassing geen CoInitializeSecurity kan aanroepen of als u liever geen programmatische beveiliging gebruikt, is dit mogelijk een goede optie. Als u besluit om procesbrede beveiliging in te stellen met behulp van het register, moet u er rekening mee houden dat COM, als u CoInitializeSecurity binnen uw programma aanroept, de waarden in CoInitializeSecurity zal gebruiken en de registerwaarden negeert.

Er zijn twee manieren om beveiliging in te stellen in het register voor uw toepassing:

  • U kunt Dcomcnfg.exegebruiken. Dit biedt een eenvoudige gebruikersinterface voor het wijzigen van beveiligingswaarden. Alle COM-servers kunnen worden geconfigureerd met behulp van Dcomcnfg.exe. Zie Setting Process-Wide Security Using DCOMCNFGvoor meer informatie. Clienttoepassingen worden echter normaal gesproken niet weergegeven in Dcomcnfg.exe tenzij de client een GUID maakt en in het register invoert.
  • U kunt beveiligingswaarden instellen onder de AppID--sleutel voor de toepassing. In de rest van dit onderwerp wordt uitgelegd hoe u beveiliging instelt in het register met behulp van de AppID--sleutel.

Een AppID is een GUID die een serverproces voor een of meer klassen vertegenwoordigt. Elke klasse is gekoppeld aan precies één AppID en AppID's kunnen alleen worden toegewezen aan EXE's. DLL's krijgen geen AppID, tenzij ze worden uitgevoerd in een surrogaat, en dan is het het surrogaatproces dat de AppID heeft. Als er meerdere DLL's in een surrogaat worden geladen, heeft elke surrogaat slechts één AppID.

Voor sommige COM-servers genereert de registratiecode een AppID en worden vermeldingen in het register geplaatst die de AppID toewijzen aan de naam van het uitvoerbare bestand. Maar sommige COM-servers bieden deze functionaliteit niet. Als de registratiecode van de server echter een vermelding toevoegt voor HKCR\CLSID{ServerCLSID}\LocalServer32 wanneer dcomcnfg.exe wordt uitgevoerd, wordt automatisch een AppID toegevoegd voor de CLSID.

Voor een COM-client die niet als server fungeert, wordt deze toewijzing niet gemaakt omdat de client nooit is geregistreerd. Om beveiliging in te stellen met behulp van de AppID--sleutel, moet de client de benodigde registervermeldingen maken, hetzij programmatisch met behulp van de registerfuncties of met behulp van regedit.

Als u besluit om procesbrede beveiliging in het register in te stellen onder de AppID--sleutel, moet u er rekening mee houden dat er twee benoemde waarden zijn onder de AppID--sleutel die u kunt instellen zonder beheerdersmachtigingen:

De waarden AuthenticationLevel en AccessPermission- worden onafhankelijk ingesteld en hebben afzonderlijke standaardwaarden. Als de AuthenticationLevel waarde niet aanwezig is, wordt de LegacyAuthenticationLevel waarde gebruikt als de standaardwaarde. Als de AccessPermission- waarde niet aanwezig is, wordt de DefaultAccessPermission--waarde als de standaardwaarde gebruikt. De AuthenticationLevel- en de AccessPermission- waarden zijn echter op de volgende manieren onderling verbonden:

  • Als de AuthenticationLevel geen is, worden de AccessPermission- en DefaultAccessPermission-waarden genegeerd voor die toepassing.
  • Als de AuthenticationLevel niet aanwezig is en de LegacyAuthenticationLevel geen is, worden de AccessPermission- en DefaultAccessPermission-waarden genegeerd voor die toepassing.

Beveiliging Process-Wide instellen