Por que estou recebendo um erro de permissão ao adicionar valores de registro por meio do VBScript?

0

Eu tenho tentado executar um arquivo VBScript toda vez que meu sistema é inicializado, e tentei modificar o registro usando o VBScript para adicioná-lo à lista de programas a serem executados, mas estou enfrentando um problema com permissões, embora Eu sou o administrador de computadores. Eu estou tentando adicionar VB_Start.vbs à lista de tarefas de inicialização, modificando o registro com o seguinte código VBScript:

Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\Visual Basic" , "VB_Start.vbs" , "REG_SZ"
Set WshShell = Nothing

Quando executo este código, estou recebendo o seguinte erro:

Error: Invalid root in registry key HKEY_LOCAL_MACHINE\SOFTWARE\......
Error Code: 80070005
Source: WshShell.RegWrite
    
por user226438 10.07.2013 / 20:43

2 respostas

1

80070005 indica um erro de acesso negado. Só porque você é um administrador, não significa que o seu VBS está sendo executado automaticamente com direitos de administrador. Adicione o seguinte código ao topo do script:

If WScript.Arguments.Named.Exists("elevated") = False Then
  CreateObject("Shell.Application").ShellExecute "wscript.exe", """" & WScript.ScriptFullName & """ /elevated", "", "runas", 1
  WScript.Quit
End If

O código detectará se o script está sendo executado, ou então se reinicia com direitos de administrador (você ainda verá o prompt, é claro).

    
por 10.07.2013 / 20:59
0
Const HKEY_CURRENT_USER = &H80000001

strComputer = "."

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

strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
strValueName = "Hidden"
strStringValues = "0"

oReg.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,strStringValues

Este é o formato de código que eu uso para adicionar chaves de registro. Tudo o que você precisa alterar é o que está em strValueName , o strStringValues e o inicial CONST para apontar para a seção apropriada no registro. Esses códigos são:

Const HKEY_CLASSES_ROOT     = &H80000000
Const HKEY_CURRENT_USER     = &H80000001
Const HKEY_LOCAL_MACHINE    = &H80000002
Const HKEY_USERS        = &H80000003
Const HKEY_CURRENT_CONFIG   = &H80000005
    
por 10.07.2013 / 20:59