Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V jazyce C++ můžete nastavit zabezpečení celého procesu voláním CoInitializeSecurity před připojením k rozhraní WMI prostřednictvím IWbemLocator::ConnectServer. Můžete také změnit úroveň ověřování, úroveň zosobnění nebo ověřovací službu ve volání, které získá ukazatel na WMI proxy, například IWbemServices nebo IWbemCallResult. Volání CoSetProxyBlanket také umožňuje změnit ověřovací službu (Kerberos, NTLM nebo negotiate).
Skripty a aplikace jazyka Visual Basic nastavují zabezpečení proxy nepřímo prostřednictvím volání SWbemServices a dalších automatizačních objektů. Další informace o nastavení a změně ověřování a zosobnění ve skriptu naleznete v tématu Nastavení výchozí úrovně zabezpečení procesu pomocí jazyka VBScript.
Změna úrovní zabezpečení nebo služeb je primárně problém při připojování k rozhraní WMI na vzdáleném počítači, na kterém běží jiný operační systém. Pro více informací se podívejte na téma Připojení mezi různými operačními systémy.
Klientská aplikace se připojí k proxy serveru WMI pomocí identity. Identita je datový objekt, který se skládá z uživatelského jména, hesla a nastavení autority. Volání rozhraní IWbemLocator::ConnectServer vytvoří počáteční identity pro klientskou aplikaci WMI. Metoda ConnectServer přebírá identitu v sadě tří parametrů, které můžete nastavit na NULL označující aktuálního uživatele. Můžete také zadat parametr, který neníNULL, pro označení konkrétního uživatele a domény. Pokud je volání úspěšné, ConnectServer vrátí ukazatel, přes který můžete získat přístup k různým vzdáleným procesům, jako je služba WMI nebo operační systém Windows přímo.
Stejně jako mnoho rozhraní COM ConnectServer vrátí ukazatel na proxy. Proxy je datový objekt, který představuje vzdálený proces, jako je WMI nebo vzdálený zprostředkovatel. Com používá proxy server, aby vývojářům umožnil přístup ke vzdáleným datům, jako by byla místní.
Následující rozhraní rozhraní WMI používají proxy servery:
IWbemServices (SWbemServices objekt skriptování)
IWbemRefresher (SWbemRefresher skriptovací objekt)
WMI Refresher je zvláštní případ, protože se mu předává ukazatel IWbemServices, jehož bezpečnostní nastavení musí být správně zajištěna. Další informace o používání obnovovacích objektů naleznete v tématu Přístup k datům o výkonu v jazyce C++.
Jakmile dostanete ukazatel na vzdálený proces, můžete udělat jednu ze dvou věcí. Pokud víte, co proces dělá, můžete nastavit zabezpečení na ukazateli a přistupovat k procesu normálně. To je případ většiny ukazatelů na službu WMI. Další informace najdete v tématu Nastavení úrovní zabezpečení připojení rozhraní WMI na. Alternativně je potřeba přistupovat k jinému rozhraní COM na proxy, například IUnknown::Release, prostřednictvím volání na rozhraní IUnknown na proxy.
Výchozí hodnoty a doporučení
Distribuovaná verze modelu DCOM (Component Object Model) vyjedná výchozí ověřovací službu (Kerberos, NTLM nebo Negotiate) a nemůžete určit výchozí ověřovací službu pomocí CoInitializeSecurity. Určení RPC_C_AUTHN_DEFAULT v parametru ověřovací služby CoSetProxyBlanket umožňuje modelu DCOM vybrat příslušnou službu. Pro vzdálená připojení je výchozí služba Negotiate, což je doporučená služba pro aplikace fungující v doménách Kerberos i jiných než Kerberos. Pro místní připojení je výchozí ověřovací služba NT LAN Manager (NTLM).
Následující příklad kódu ukazuje výchozí službu ověřování, která se používá.
// The pWbemServices variable is of type IWbemServices*
HRESULT hr = CoSetProxyBlanket(
pWbemServices, //Proxy
RPC_C_AUTHN_DEFAULT, //Authentication service
RPC_C_AUTHZ_DEFAULT, //Authorization service
COLE_DEFAULT_PRINCIPAL, //Server principal name used
// by authentication service
RPC_C_AUTHN_LEVEL_DEFAULT, //Authentication level
RPC_C_IMP_LEVEL_IMPERSONATE, //Impersonation level
COLE_DEFAULT_AUTHINFO, //Client identity
EOAC_DEFAULT //Capability flags
);
Příklad kódu v tomto tématu vyžaduje následující referenci a #include příkazy.
#define _WIN32_DCOM
#include <wbemidl.h>
#include <comdef.h>
#pragma comment(lib, "wbemuuid.lib")
Pro skriptování se doporučuje použít výchozí hodnoty, které DCOM vybere pro vzdálená volání. Na místním počítači nelze zadat ověřovací službu pro volání na WMI. Další informace najdete v tématu Nastavení služby ověřování pomocí jazyka VBScript a Vytvoření řetězce monikeru.