none
Verificar se a chave é verdadeira RRS feed

  • Pergunta

  •  

    Tenho esse script abaixo onde gostaria que ele verificasse se a chave existe antes de apagar, para não causar erro dizendo que não encontrou a chave quando ela não existir.

     

    Set objShell = WScript.CreateObject("Wscript.Shell")

    objShell.RegDelete "HKLM\Software\Microsoft\Windows\CurrentVersion\run\cacic2"

    objShell.RegDelete "HKLM\Software\Microsoft\Windows\CurrentVersion\run\CheckSystemRoutine"

    Alguem pode me ajudar?

    quarta-feira, 28 de maio de 2008 12:37

Respostas

  • Ah, mais uma: o RegDelete apaga a chave somente se ela existir. Se ela não existir, o método gera um erro, que pode ser "pego" usando as instruções On Error Resume Next, Err.Number e On Error Goto 0


    []s,

    Vinicius Canto
    MVP Admin Frameworks
    Blog sobre scripting: http://viniciuscanto.blogspot.com

    terça-feira, 3 de junho de 2008 11:42
    Moderador

Todas as Respostas

  • Fábio, segue o script:

     

    Const HKEY_LOCAL_MACHINE = &H80000002

    strComputer = "."
     
    Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\defaultTongue TiedtdRegProv")
     
    Caminho1 = "Software\Microsoft\Windows\CurrentVersion\run\CheckSystemRoutine"

    Caminho2 = "Software\Microsoft\Windows\CurrentVersion\run\cacic2"
    objRegistry.EnumValues HKEY_LOCAL_MACHINE, Caminho1, NValores, TValores

    IF ISNULL(Nvalores) then
     wscript.echo "A chave " & Caminho1 & " não existe"
    else
     wscript.echo "A chave " & Caminho1 & " existe"
    end if


    objRegistry.EnumValues HKEY_LOCAL_MACHINE, Caminho2, NValores, TValores

    IF ISNULL(Nvalores) then
     wscript.echo "A chave " & Caminho2 & " não existe"
    else
     wscript.echo "A chave " & Caminho2 & " existe"
    end if

    quinta-feira, 29 de maio de 2008 15:48
  • Olá laerte executei esse script e ele me apresentou o seguinte erro

     

    Linha 23

    Caract.: 1

    Erro: 0x8004100E

    Codigo: 8004100E

    Origem: (null)

     

    Voce poderia me ajudar?? na parte do echo nem precisava pois esse seria um script de logoff e não precisa informar o usuario.

    quinta-feira, 29 de maio de 2008 17:15
  • Fábio me diz se essa chave que você disse que é para procurar não é um registro, porque se for um registro o script está nesse tópico aqui Wink

     

    http://forums.microsoft.com/technet-br/ShowPost.aspx?PostID=3313797&SiteID=29

    quinta-feira, 29 de maio de 2008 21:24
  •  

    Acho que não estou me expressando direito, é o seguinte esse script sera utilizado no momento do logoff do usuario e ai ele ira verificar se existi a chave, se sim apaga caso contrario nao faz nada, nem precisa da mensagem para o usuário.
    sexta-feira, 30 de maio de 2008 10:31
  • Fábio, acho que você que não está me entendendo, você disse que precisaria verificar se uma chave existe correto? então eu fui procurar o caminho que você me passou e vi que essa "chave" que você esteja procurando pode ser um registro, que são metodos diferentes de procurar, um você enumera e o outra você procura, e quanto a mensagem na tela, só te passei dessa forma, para você ver se o script está funcionando, se estiver e só trocar a linha da mensagem pela linha com o comando de deletar o script ok? Wink qualquer coisa é só postar de novo Wink

    segunda-feira, 2 de junho de 2008 14:15
  • Olá,


    minhas sugestões:

    1) Vocês estão confundindo os nomes e, por consequência, se confundindo. O registro é composto por chaves, valores e dados. Mais info em: http://en.wikipedia.org/wiki/Windows_Registry#Keys_and_values

    2) Eu não recomendo fazer isso via script de logoff... parece mais um remendo na aplicação, que deve ter sido mal escrita ou não está instalada corretamente. Usuários comuns normalmente não possuem direito de escrita em chaves abaixo de HKLM.


    []s,


    Vinicius Canto
    MVP Admin Frameworks
    Blog sobre scripting: http://viniciuscanto.blogspot.com
    terça-feira, 3 de junho de 2008 11:41
    Moderador
  • Ah, mais uma: o RegDelete apaga a chave somente se ela existir. Se ela não existir, o método gera um erro, que pode ser "pego" usando as instruções On Error Resume Next, Err.Number e On Error Goto 0


    []s,

    Vinicius Canto
    MVP Admin Frameworks
    Blog sobre scripting: http://viniciuscanto.blogspot.com

    terça-feira, 3 de junho de 2008 11:42
    Moderador
  •  

    Olá Vinicius voce pode me exemplificar por favor? pois sou leigo nesse assunto.
    terça-feira, 3 de junho de 2008 12:33
  • http://www.powerasp.com/content/new/on-error-resume-next.asp

    []s,



    Vinicius Canto
    MVP Admin Frameworks
    blog sobre scripting: http://viniciuscanto.blogspot.com
    quarta-feira, 4 de junho de 2008 02:20
    Moderador
  • Obrigado pela dica o meu script ficou da seguinte forma.

     

    Set objShell = WScript.CreateObject("Wscript.Shell")
    Err.Clear
     On Error Resume Next
    objShell.RegDelete "HKLM\Software\Microsoft\Windows\CurrentVersion\run\cacic2" 'apaga o registro
    objShell.RegDelete "HKLM\Software\Microsoft\Windows\CurrentVersion\run\CheckSystemRoutine" 'apaga o registro
     
    On Error GoTo 0

     

    quarta-feira, 4 de junho de 2008 11:59
  • Olá,


    eu sei que tá funcionando mas...  não seria legal verificar se houve algum erro no RegDelete com um IF?


    If Err.Number <> 0 then
    ..
    else
    ..
    end if


    Vinicius Canto
    MVP Admin Frameworks
    blog sobre scripting http://viniciuscanto.blogspot.com
    quarta-feira, 4 de junho de 2008 12:49
    Moderador