O script de inicialização da política de grupo precisa de privilégios elevados

2

Eu tenho um script que quero executar na inicialização, mas isso requer privilégios elevados. Existe uma maneira de fazer isso com a Diretiva de Grupo?

Eu tentei adicioná-lo como um script de inicialização usando o GPO, mas ele não parece ser executado. Se eu executá-lo a partir de um prompt cmd padrão, ele dá acesso negado, mas se eu clicar com o botão direito do mouse no prompt de comando e selecionar "Executar como administrador", ele funcionará bem, então suspeito que seja um problema de permissão.

O script está definindo a MTU em cada NIC como sendo 1400 como segue

Dim strDNSDomain  
Dim strComputer  
Dim strID  
Dim strKeyPath  
Dim strValueName  
Dim strDWValue  

Const HKEY_LOCAL_MACHINE = &H80000002  
Const DEFAULT_MTU_Size = 1400  
const KEY_SET_VALUE = &H0002

'====  Gets the Setting for MTU from the command line in the form of /MTU:1500 ====  

Set colNamedArguments = Wscript.Arguments.Named  

strComputer = "." 
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\" & strComputer & "\root\default:StdRegProv")  
set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\" & strComputer & "\root\cimv2")

strDWValue = DEFAULT_MTU_SIZE

Set colAdapters = objWMIService.ExecQuery ("SELECT * FROM Win32_NetworkAdapterConfiguration")  
For each objAdapter in colAdapters  
   strDNSDomain = objAdapter.DNSDomain  
   if Instr(1, strDNSDOmain, strTemp) >0 then  
       strID = objAdapter.SettingID  
       strKeyPath = "SYSTEM\CurrentControlSet\Services\TCPIP\Parameters\Interfaces\" & strID  
       strValueName = "MTU" 

    oReg.CheckAccess HKEY_LOCAL_MACHINE, strKeyPath, KEY_QUERY_VALUE, bHasAccessRight
    If bHasAccessRight = True Then
        oReg.GetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,dwValue
        WScript.Echo strKeyPath & " value " & strValueName & " contains " & dwValue
        oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strDWValue  
        WScript.Echo strKeyPath & " value " & strValueName & " changing to " & strDWValue
        oReg.GetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,dwValue
        WScript.Echo strKeyPath & " value " & strValueName & " changed to " & dwValue
    Else
        WScript.Echo "Cannot set registry value - access denied"
    End if
   End if  
Next  
    
por Phil 10.06.2011 / 11:20

2 respostas

2

Os scripts colocados em Configuração do Computador \ Configurações do Windows \ Scripts (Inicialização / Desligamento) são executados como Sistema Local , que geralmente é tudo o que é necessário para instalar programas etc. é verdadeiro para os MSIs implantados usando a Política de Grupo.

Você sabe quais privilégios seu script requer? O que o seu script está fazendo requer esses privilégios?

Pegue uma cópia do Process Monitor da Sysinternals e, usando uma conta de usuário padrão , monitore seu script para descobrir o que ele está fazendo e quais privilégios extras ele precisa para ser executado. Você pode então usar essa informação para descobrir por que a conta do Sistema Local não pode executá-la.

EDITAR: Uma opção disponível para você é usar o script de inicialização para executar um comando net shell

netsh interface ipv4 set subinterface interface="Local Area Connection" mtu=1400

É um único forro que você precisa no seu script. Qualquer uso?

Lewis

    
por 10.06.2011 / 12:45
0

Você pode realizar as atualizações do registro por meio das Preferências da Política de Grupo. Há um bom subconjunto das opções de GPP para alterações no registro, conforme descrito neste documento do TechNet - link

    
por 27.06.2011 / 16:30