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_

Use o procedimento a seguir para definir privilégios de segurança no Visual Basic.

Para definir privilégios no Visual Basic

  1. Crie um objeto do tipo SWbemLocator.

  2. 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.

  3. 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)}")

Constantes de privilégio

Executar operações privilegiadas