Sdílet prostřednictvím


Provádění privilegovaných operací

Privilegované operace vyžadují oprávnění zabezpečení, jako je SeLoadDriverPrivilege (wbemPrivilegeLoadDriver v konstantách rozhraní API pro skriptování ), oprávnění, které musí být povolené pro účet, který načítá ovladač zařízení. Oprávnění nelze přidat správci nebo uživateli prostřednictvím rozhraní WMI, můžete povolit pouze oprávnění, která už účet má. Seznam oprávnění najdete v tématu Privilege_Constants.

Ve výchozím nastavení může místní uživatel v počítači číst statická data z úložiště rozhraní WMI, zapisovat do instancí poskytovaných poskytovateli a spouštět metody zprostředkovatele, pokud poskytovatel nevynucuje vlastní zvláštní požadavky na zabezpečení. Pouze správci se můžou připojit ke vzdálenému počítači, změnit popisovače zabezpečení nebo změnit statická data úložiště WMI, jako je definice třídy WMI. Všechna oprávnění jsou povolená pro vzdálené připojení. Další informace najdete v tématu Zabezpečení vzdáleného připojení rozhraní WMI.

Konstanty oprávnění pro jazyk C++ se liší od konstant, které používají automatizační jazyky, jako je Visual Basic. Skripty musí místo názvu používat hodnotu konstanty. Další informace najdete v tématu Provádění privilegovaných operací pomocí jazyka C++ nebo provádění privilegovaných operací pomocíjazyka VBScript .

Častou příčinou chyb způsobujících odepření přístupu při používání rozhraní WMI je nedostatek povoleného oprávnění pro provedení operací, například získání všech instancí Win32_NTEventlogFile. Bez povolení oprávnění SeSecurity nemáte přístup k souboru protokolu zabezpečení.

Následující příklad kódu VBScript ukazuje, jak nastavit oprávnění SeSecurity v řetězci monikeru. Při použití v monikeru název oprávnění v závorkách zahodí počáteční "Se". Další informace naleznete v části vytvořením řetězce monikeru.

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate,(Security)}!\\" _
    & strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery _
    ("Select * from Win32_NTEventLogFile " _
    & "Where LogFileName='Security'")
For Each LogFile in colFiles
Wscript.Echo LogFile.NumberOfRecords
Next

konstanty oprávnění