none
Dois valores diferentes uma unica resposta !!! RRS feed

  • Pergunta

  • Ba galera boa tarde.

    Alguém consegue me dar uma ajuda tche.
    Montei a logica abaixo que le a chave de registro de dois servidores, e esta chave esta relacionada a um serviço na rede, e quando um usuário esta bloqueado neste serviço, a chave fica com valor 3, ate ai esta tudo funcionando, porem o meu problema é se o usuário esta bloqueado no servidor A, e não esta no servidor B, eu necessito que a resultante seja bloqueado, o que esta acontecendo é o seguinte, tenho uma interface gráfica tche e para ela eu passou uma variável chamada strresult, e esta variável tem que ser o resultado da strresult1 e strresult2 deste código abaixo, porem quando o usuário esta bloqueado no servidor A e não no B, como o B é o ultimo a ser verificado, o resultado da strresult da tela gráfica é que o usuário não esta bloqueado, a ajuda que necessito tche é ver uma forma de colocar o resultado de strresult1 e strresult2 em alguma logica que defina que se a strresult1 é bloqueado e a strresult2 não é bloqueado ele retorne para a strresult o valor bloqueado, e vise versa tche, se o servidor B esta bloqueado mais o servidor A não, ele retorne para o strresult o valor bloqueado, só deve ser retornado o valor ok que é liberado nos dois servers se o retorno das variáveis seja Not Locked.
    Ba galera neste processo tb tem algo que tem que ser tratado, caso a chave não exista nos dois servers o valor a ser retornado para a variável strresult é Usuario não cadastrado.

    Obrigado tche

    Codigo

    strServer1 = "serverA"
    strServer2 = "ServerB"
    
    Const HKEY_LOCAL_MACHINE = &H80000002
    strKeyPath = "SYSTEM\CurrentControlSet\Services\RemoteAccess\Parameters\AccountLockout\Embase:" & sUserIDValue
    strkeyname = "Denials"
    
    'reads the registry values
    strValue = Null
    
    Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
    	strServer1 & "\root\default:StdRegProv")
    	objReg.GetDwordValue HKEY_LOCAL_MACHINE,strKeyPath,strkeyname,strValue
    
    on error goto 0
    If IsNull(strValue) Then strValue ="Semchave"
        
        If strValue = "3" Then 
        	strresult1 = "Locked"
         Else
        	strresult1 = "Not Locked"
        End If
    
    	If strValue = "Semchave" Then
         	strresult1 = "Usuario nao cadastrado"
    	End If
    
    '*********************************************************************************************************************************
    Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
    	strServer2 & "\root\default:StdRegProv")
    	objReg.GetDwordValue HKEY_LOCAL_MACHINE,strKeyPath,strkeyname,strValue
    
    on error goto 0
    If IsNull(strValue) Then strValue ="Semchave"
        
        If strValue = "3" Then 
        	strresult2 = "Locked"
         Else
        	strresult2 = "Not Locked"
        End If
    
    	If strValue = "Semchave" Then
         	strresult2 = "Usuario nao cadastrado"
    	End If

    segunda-feira, 13 de maio de 2013 17:32

Respostas

  • Use o OR (ou)

    strServer1 = "serverA"
    strServer2 = "ServerB"
    
    Const HKEY_LOCAL_MACHINE = &H80000002
    strKeyPath = "SYSTEM\CurrentControlSet\Services\RemoteAccess\Parameters\AccountLockout\Embase:" & sUserIDValue
    strkeyname = "Denials"
    
    'reads the registry values
    strValue = Null
    
    Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
    	strServer1 & "\root\default:StdRegProv")
    	objReg.GetDwordValue HKEY_LOCAL_MACHINE,strKeyPath,strkeyname,strValue1
    
    on error goto 0
    If IsNull(strValue1) Then strValue1 ="Semchave"
        
    
    
    '*********************************************************************************************************************************
    Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
    	strServer2 & "\root\default:StdRegProv")
    	objReg.GetDwordValue HKEY_LOCAL_MACHINE,strKeyPath,strkeyname,strValue2
    
    on error goto 0
    If IsNull(strValue2) Then strValue2 ="Semchave"
        
    
    if strValue1=3 or strValue2=3 then
    	Wscript.echo "Locked"
    end if

    Veja que tive que mudar as váriaveis que recebem os valores porque você ficou aproveitando a mesma variavel (não faça isso).


    Fábio de Paula Junior

    • Marcado como Resposta Marcelo TI terça-feira, 14 de maio de 2013 19:38
    segunda-feira, 13 de maio de 2013 20:16
    Moderador
  • Ba fabião consegui resolver passando a condição para 4 no lugar do "semchave", e utilizando select case desta forma tche.;

    Select Case strValue1 Or strValue2

        Case 0
            WScript.Echo "Not Locked"
        
        Case 3
            WScript.Echo "Locked"
        
        Case 4
            WScript.Echo "Usuario sem cadastro"

    End Select

    valeu pela força

    • Marcado como Resposta Marcelo TI terça-feira, 14 de maio de 2013 19:38
    terça-feira, 14 de maio de 2013 19:38

Todas as Respostas

  • Use o OR (ou)

    strServer1 = "serverA"
    strServer2 = "ServerB"
    
    Const HKEY_LOCAL_MACHINE = &H80000002
    strKeyPath = "SYSTEM\CurrentControlSet\Services\RemoteAccess\Parameters\AccountLockout\Embase:" & sUserIDValue
    strkeyname = "Denials"
    
    'reads the registry values
    strValue = Null
    
    Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
    	strServer1 & "\root\default:StdRegProv")
    	objReg.GetDwordValue HKEY_LOCAL_MACHINE,strKeyPath,strkeyname,strValue1
    
    on error goto 0
    If IsNull(strValue1) Then strValue1 ="Semchave"
        
    
    
    '*********************************************************************************************************************************
    Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
    	strServer2 & "\root\default:StdRegProv")
    	objReg.GetDwordValue HKEY_LOCAL_MACHINE,strKeyPath,strkeyname,strValue2
    
    on error goto 0
    If IsNull(strValue2) Then strValue2 ="Semchave"
        
    
    if strValue1=3 or strValue2=3 then
    	Wscript.echo "Locked"
    end if

    Veja que tive que mudar as váriaveis que recebem os valores porque você ficou aproveitando a mesma variavel (não faça isso).


    Fábio de Paula Junior

    • Marcado como Resposta Marcelo TI terça-feira, 14 de maio de 2013 19:38
    segunda-feira, 13 de maio de 2013 20:16
    Moderador
  • Ba fabião.

    compreendi obrigado pelo toque tche, e o primeiro problema foi resolvido tche tive que colocar no codigo estas chamadas abaixo tche.

    if strValue1=3 or strValue2=3 then
        Wscript.echo "Locked"
     Else
        WScript.Echo "Not Locked"
    End If

    If strValue1="Semchave" Or strValue2="Semchave" Then
        WScript.Echo "Usuario sem Cadastro"
    End If

    mas quando a chave não existe tche que ele sobe o valor "Semchave", a informação de usuario sem cadastro não esta rolando tche, vc pode me ajudar.

    o erro foi "(27, 1) Erro de tempo de execução do Microsoft VBScript: Tipos incompatíveis: 'strValue1'"

    obrigado tche.

    terça-feira, 14 de maio de 2013 00:50
  • Ba fabião,

    fiz um teste hj tche coloando On Error resume next antes do treixo que te passei e o resultado é a apresentação de dois echo, o do Locked e o do Usuario sem cadastro tche, e quando tiro ele reporta Tipos incompatíveis: 'strValue1'".

    Ja fiz um teste tb colocando o IsNull do strValue1 e 2 como um valor numerico por exemplo 4, porem ele apresenta o mesmo comportamento quando a chave de registro nao existe ou seja o resultado é a apresentação de dois echo, o do Locked e o do Usuario sem cadastro tche.

    tentei tb colocar os if assim mais sem sucesso quando a chave de registro nao existe tche.

    If strValue1=0 Or strValue2=0 Then
        WScript.Echo "Not Locked"    
    End If

    If strValue1=3 or strValue2=3 Then
        Wscript.echo "Locked"
    End If

    If strValue1=4 Or strValue2=4 Then ' aqui tb tentei com a palavra "Semchave"
        WScript.Echo "Usuario sem rotina"
    End If

    obrigado tche

    terça-feira, 14 de maio de 2013 10:40
  • Ba fabião consegui resolver passando a condição para 4 no lugar do "semchave", e utilizando select case desta forma tche.;

    Select Case strValue1 Or strValue2

        Case 0
            WScript.Echo "Not Locked"
        
        Case 3
            WScript.Echo "Locked"
        
        Case 4
            WScript.Echo "Usuario sem cadastro"

    End Select

    valeu pela força

    • Marcado como Resposta Marcelo TI terça-feira, 14 de maio de 2013 19:38
    terça-feira, 14 de maio de 2013 19:38