Executar operações privilegiadas usando VBScript
Se você usar a API de script para WMI, poderá definir privilégios de segurança específicos. Por exemplo, você pode definir os privilégios de segurança para solicitar um desligamento do sistema operacional ou examinar o log de eventos de segurança. Para obter mais informações, confira Executar com privilégios especiais.
Você só precisa definir privilégios ao acessar o WMI em seu computador. Quando você está acessando um host remoto, a RPC do COM define automaticamente os privilégios. Para determinar todos os privilégios necessários, consulte a documentação das classes do WMI específicas que você deseja acessar, como Win32_OperatingSystem. Para obter mais informações, confira WbemPrivilegeEnum
As seguintes seções serão abordadas neste tópico:
- Definir um privilégio do objeto Security_
- Definir um privilégio como parte de um moniker
- Revogar e redefinir privilégios
- Tópicos relacionados
Definir um privilégio do objeto Security_
Use o procedimento a seguir para definir privilégios de segurança no Visual Basic.
Para definir privilégios no Visual Basic
Crie um objeto do tipo SWbemLocator.
Adicione o novo privilégio ao objeto SWbemLocator.Security_.
O objeto Security_ contém uma coleção SWbemObjectSet. Os objetos no conjunto são objetos SWbemSecurity. Para obter mais informações, consulte Acessar uma coleção.
Faça logon no WMI e recupere um objeto SWbemServices.
O objeto SWbemServices herda o privilégio definido na etapa anterior.
Você também pode definir um privilégio usando o método SWbemPrivilegeSet.AddAsString.
Definir um privilégio como parte de um moniker
Você pode definir um privilégio como parte de um moniker.
O exemplo a seguir mostra como adicionar um privilégio de deputação a um moniker.
Set Service = GetObject("winmgmts:{impersonationLevel=impersonate, (Debug)}")
Revogar e redefinir privilégios
O exemplo a seguir mostra como definir o privilégio SeDebugPrivilege e revogar o privilégio SeRemoteShutdownPrivilege.
Set Service = GetObject("winmgmts:{impersonate,(Debug,!RemoteShutdown)}")
Tópicos relacionados