MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


    Funçao para ler o Regedit do windows não esta lendo mais....

    Pedromelo
    Pedromelo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 87
    Registrado : 13/07/2012

    Funçao para ler o Regedit do windows não esta lendo mais.... Empty Funçao para ler o Regedit do windows não esta lendo mais....

    Mensagem  Pedromelo em 22/4/2019, 04:58

    Boas a todos.

    Tenho usado o seguinte codigo para verificar se existe um registro expecifico no Regedit (registro) do Windows

    Código:

    Public Function fncLerRegedit(strRegistry As String, Optional strVariavel As String = "") As Boolean
    '------------------------------------------------------------------------------------
    'Verifica no Regedit se existe o registro (opcional - atribui o valor a uma variavel)
    '------------------------------------------------------------------------------------
    On Error Resume Next
    Dim wshShell As Object
    ' Reseta a funçao
    fncLerRegedit = False

    ' Lê o registro no Regedit verificando se ele existe e valida a funçao
    Set wshShell = CreateObject("WScript.Shell")
    strVariavel = wshShell.RegRead(strRegistry)

    Select Case Err
    Case 0: fncLerRegedit = True
    End Select

    End Function

    Problema é que agora ele não esta lendo mais os registros e não percebo o porque.
    Ja tentei varios registros diferentes e nada.
    Este codigo vem com um conjunto de codigos para ler e gravar registros no Regedit e a parte de gravar funciona bem só a de ler é que nao esta dando mais....
    Se alguem souber o porque ou puder ajudar
    Agradeço.
    Pedro Melo


    Última edição por Pedromelo em 23/4/2019, 04:34, editado 1 vez(es)
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6164
    Registrado : 15/03/2013

    Funçao para ler o Regedit do windows não esta lendo mais.... Empty Re: Funçao para ler o Regedit do windows não esta lendo mais....

    Mensagem  ahteixeira em 22/4/2019, 10:29

    Olá Pedro,

    Como resolveu? Executando com "Administrador"?
    Pode partilhar?
    O fórum agradece.

    Abraço
    Pedromelo
    Pedromelo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 87
    Registrado : 13/07/2012

    Funçao para ler o Regedit do windows não esta lendo mais.... Empty Re: Funçao para ler o Regedit do windows não esta lendo mais....

    Mensagem  Pedromelo em 23/4/2019, 04:36

    Peço desculpas
    Afinal nao ficou resolvido.
    Tive que formatar meu pc e reinstalar o Windows e o Office e o certo é que continua dando o mesmo problema.

    Obtenho o seguinte erro:

    Funçao para ler o Regedit do windows não esta lendo mais.... Erro_r10

    Agradeço
    Pedro Melo
    Pedromelo
    Pedromelo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 87
    Registrado : 13/07/2012

    Funçao para ler o Regedit do windows não esta lendo mais.... Empty Re: Funçao para ler o Regedit do windows não esta lendo mais....

    Mensagem  Pedromelo em 24/4/2019, 07:08

    Boas

    DESCOBRI que o problema esta relacionado com o uso do Office 32bit em Windows de 64bit.

    Estava a usar o Office de 32bits e nem me tinha apercebido.

    Re-instalei o Office mas de 64bit e já não tenho problema nenhum a ler o registo pretendido.

    Agora sabendo o MOTIVO do problema tem como evitar essa situação.

    Pois preciso que mesmo estando com Office de 32bit consiga ler o Registo do Windows em Windows de 64bit.

    Obrigado
    Pedro Melo
    Pedromelo
    Pedromelo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 87
    Registrado : 13/07/2012

    Funçao para ler o Regedit do windows não esta lendo mais.... Empty Re: Funçao para ler o Regedit do windows não esta lendo mais....

    Mensagem  Pedromelo em 26/4/2019, 05:06

    Boas!

    Serio que nao tem uma soluçao para contornar esse bloqueio do Office 32bits no Windows de 64bits!!!!
    Sad

    Aguardo alguma ajuda
    Obrigado
    Pedro Melo
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6164
    Registrado : 15/03/2013

    Funçao para ler o Regedit do windows não esta lendo mais.... Empty Re: Funçao para ler o Regedit do windows não esta lendo mais....

    Mensagem  ahteixeira em 26/4/2019, 15:40

    Olá Pedro Melo,

    Não compreendo essa diferença de 32 para 64 bits.
    Poderá ser o "caminho/localização" da chave, pode também ser permissões.

    Para despistar, teste o código abaixo na "immediate" na duas versões (32 e 64)

    Código:
    Sub teste()
        Dim objShell, strTest1, strTest2
       
        strTest1 = "HKEY_CURRENT_USER\Environment\Temp"
        strTest2 = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName"
       
        Set objShell = CreateObject("WScript.Shell")
       
        MsgBox "Chave HKCU: " & Chr(13) & objShell.RegRead(strTest1) & Chr(13) & Chr(13) & "Chave HKLM: " & Chr(13) & objShell.RegRead(strTest2)
    End Sub

    Abraço
    Pedromelo
    Pedromelo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 87
    Registrado : 13/07/2012

    Funçao para ler o Regedit do windows não esta lendo mais.... Empty Re: Funçao para ler o Regedit do windows não esta lendo mais....

    Mensagem  Pedromelo em 26/4/2019, 15:48

    Boas.
    Obrigado por dar uma olhada.
    Nao tem a ver com a localização da chave pois o problema ocorre por culpa do Office e nao do Windows.
    O Windows nos dois casos é de 64bits. a chave fica registrada num so local pois a chave que pretendo encontrar é de um outro aplicativo
    Se nao me engano a chave nao muda de lugar se for em Windows de 32bits mas para isso teria que testar e nao tenho windows de 32bits para testar.

    Sobre o erro acho que é por causa do windows ser 64bits e o Office ser 32bits e pelo que consegui perceber o office acaba por nao ter permiçoes para ler ou escrever chaves em certas partes do registro do windows.
    já o office de 64bits acaba por ja ter essa permiçao.

    Vou testar esse codigo e ja dou uma resposta. terei que desinstalar o office e reinstalar o de 32bits mas vou testar.
    darei resposta assim que possivel

    Obrigado
    Pedro Melo
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6164
    Registrado : 15/03/2013

    Funçao para ler o Regedit do windows não esta lendo mais.... Empty Re: Funçao para ler o Regedit do windows não esta lendo mais....

    Mensagem  ahteixeira em 26/4/2019, 15:57

    Olá Pedro,

    Antes de desinstalar, teste na versão que tem instalada.

    Abraço
    Pedromelo
    Pedromelo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 87
    Registrado : 13/07/2012

    Funçao para ler o Regedit do windows não esta lendo mais.... Empty Re: Funçao para ler o Regedit do windows não esta lendo mais....

    Mensagem  Pedromelo em 26/4/2019, 16:10

    Boas
    Acabei de fazer o teste

    Tanto no Office 64bits ou no de 32bits eu obtenho os mesmos dados que estao na foto

    Funçao para ler o Regedit do windows não esta lendo mais.... Captur10

    Para ter uma ideia mais concreta uma das chaves que pretendo procurar e que dá esse erro é a seguinte:

    "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{005A3A96-BAC4-4B0A-94EA-C0CE100EA736}\LocalServer32\"

    pertence ao Dropbox e usando a formula deveria me dar a localizaçao da pasta do Dropbox.

    No Office 64bits a formula consegue o pretendido. ja no de 32bits retorna nulo.

    Nao esquecendo que estou no windows 64bits. nao sei como se comportaria no windows 32bits usando office 32bits ou 64bits pois nao tenho como desintalar e reinstalar o windows...

    Obrigado
    Pedro Melo
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6164
    Registrado : 15/03/2013

    Funçao para ler o Regedit do windows não esta lendo mais.... Empty Re: Funçao para ler o Regedit do windows não esta lendo mais....

    Mensagem  ahteixeira em 26/4/2019, 16:48

    Olá Pedro,

    Se for verificar no "Registry" essa chave não existe, não será essa a razão do erro.

    Talvez desta forma seja mais pratico para obter o caminho com o código abaixo:
    Código:
    Public Sub DropBoxFolders()
    'origem: http://dailydoseofexcel.com/archives/2014/05/05/find-your-dropbox-folder-in-vba/

      Dim FileSystemObject As Object 'Scripting.FileSystemObject
      Dim ScriptControl As Object 'MSScriptControl.ScriptControl
        
      Dim JsObject As Object
      Dim Json As String
        
      Set FileSystemObject = CreateObject("Scripting.FileSystemObject") 'New Scripting.FileSystemObject
      Json = FileSystemObject.OpenTextFile(DropBoxInfoJsonPath, ForReading).ReadAll
      Set FileSystemObject = Nothing
      
      Set ScriptControl = CreateObject("MSScriptControl.ScriptControl") 'New MSScriptControl.ScriptControl
      ScriptControl.Language = "JScript"
      Set JsObject = ScriptControl.Eval("(" + Json + ")")
      Set ScriptControl = Nothing
      
      On Local Error Resume Next
      
      Debug.Print "business: ", VBA.CallByName(VBA.CallByName(JsObject, "business", VbGet), "path", VbGet)
      Debug.Print "personal: ", VBA.CallByName(VBA.CallByName(JsObject, "personal", VbGet), "path", VbGet)
        
    End Sub

    Public Function DropBoxInfoJsonPath() As String
    'origem: http://dailydoseofexcel.com/archives/2014/05/05/find-your-dropbox-folder-in-vba/

      Const PATH_APPDATA As String = "APPDATA"
      Const PATH_LOCALAPPDATA As String = "LOCALAPPDATA"
      Const PATH_STATIC As String = "\Dropbox\info.json"

      On Local Error GoTo LocalError
      
      DropBoxInfoJsonPath = Environ(PATH_APPDATA) & PATH_STATIC
      If Len(Dir(DropBoxInfoJsonPath & "")) > 0 Then
        Exit Function
      End If

      DropBoxInfoJsonPath = Environ(PATH_LOCALAPPDATA) & PATH_STATIC
      If Len(Dir(DropBoxInfoJsonPath & "")) > 0 Then
        Exit Function
      End If
        
    LocalError:
      DropBoxInfoJsonPath = ""

    End Function

    Acho que tem mais vantagens, por exemplo multi-utilizador e em dominio.

    Abraço
    Pedromelo
    Pedromelo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 87
    Registrado : 13/07/2012

    Funçao para ler o Regedit do windows não esta lendo mais.... Empty Re: Funçao para ler o Regedit do windows não esta lendo mais....

    Mensagem  Pedromelo em 26/4/2019, 16:55

    Boas
    Sobre o ficheiro json eu ja conhecia essa opçao. eu mesmo explorei essa possibilidade.
    Mas se o dropbox nao for instalado na pasta padrao esse ficheiro ja nao sera localizado.

    e sobre a chave nao existir posso garantir que existe sim.

    Funçao para ler o Regedit do windows não esta lendo mais.... Captur11

    Obrigado
    Pedro Melo
    Pedromelo
    Pedromelo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 87
    Registrado : 13/07/2012

    Funçao para ler o Regedit do windows não esta lendo mais.... Empty Re: Funçao para ler o Regedit do windows não esta lendo mais....

    Mensagem  Pedromelo em 26/4/2019, 17:01

    Mais, a questao do dropbox poderia ficar resolvida pelo ficheiro json mas continuaria a existir o problema de nao se conseguir ler certas chaves no registro do windows com o office de 32bits no windows de 64bits.

    Meu problema esta nesse ponto, pretendo tentar resolver esse bloqueio pois o ideal e ter um app que rode em:

    Windows 32bits + Office 32bits
    Windows 64bits + Office 32bits
    Windows 64bits + Office 64bits

    So falei do Dropbox para dar um exemplo concreto para poder ser analizado mais facil.

    Obrigado
    Pedro Melo
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6164
    Registrado : 15/03/2013

    Funçao para ler o Regedit do windows não esta lendo mais.... Empty Re: Funçao para ler o Regedit do windows não esta lendo mais....

    Mensagem  ahteixeira em 26/4/2019, 17:26

    Olá Pedro Melo,

    Compreendo que o problema está na leitura e não no caminho do Dropbox.

    Voltando então à questão podemos ter codigos diferentes conforme a versão 32/64 ou SO.
    A chave que partilhou na mensagem 9 verifique se existe mesmo, independentemente de se numa versão mostra e noutra não.
    Creio que o caminho será por aí.

    Abraço
    Pedromelo
    Pedromelo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 87
    Registrado : 13/07/2012

    Funçao para ler o Regedit do windows não esta lendo mais.... Empty Re: Funçao para ler o Regedit do windows não esta lendo mais....

    Mensagem  Pedromelo em 26/4/2019, 17:38

    Boas
    Como ja disse anterior mas nao deve ter percebido pois nao me devo ter explicado bem.

    Eu neste momento so tenho a versao 64bits do Windows.
    O erro ocorre nao por causa da versao do windows mas sim da versao do Office no windows de 64bits (nao tenho como instalar o windows 62bits para testar com o Office de 32bits para ver se o erro se mantem ou nao)

    Logo se estamos a falar de uma so versao do windows nao tem porque o Dropbox (neste caso) registrar a chave em outro caminho.
    Por tanto a chave esta correcta seja o office de 32bits ou de 64bits.

    A questao aqui é um bloqueio nas permiçoes do office de 32bits em ler certos registros do windows coisa que ja nao acontece com o office de 64bits.
    Voltando a dizer que nao sei se esse bloqueio se mantem no office de 32bits em windows de 32bits ou se por ser os dois de 32bits o bloqueio desaparece.

    O erro esta acontecendo na seguinte situaçao:
    Windows 64bits + Office 32bits
    Windows 64bits + Office 64bits

    So o Office muda nao o SO. Logo a chave do Dropbox estara sempre no mesmo local!

    Obrigado
    Pedro Melo
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6164
    Registrado : 15/03/2013

    Funçao para ler o Regedit do windows não esta lendo mais.... Empty Re: Funçao para ler o Regedit do windows não esta lendo mais....

    Mensagem  ahteixeira em 26/4/2019, 17:49

    Olá Pedro,

    Tenho o Dropbox instalado.
    E a chave que partilhou (caminho) na mensagem 9 não existe se for verificar diretamente no registry.
    Portanto na minha opinião em 32 bit está a dar erro porque não existe.
    Com o 64 possivelmente está a fazer um mapeamento automatico para outra localizacao.

    Verifique no registry.
    De momento estou no telemóvel e não posso testar mais nada.

    Abraço e boa sorte
    Pedromelo
    Pedromelo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 87
    Registrado : 13/07/2012

    Funçao para ler o Regedit do windows não esta lendo mais.... Empty Re: Funçao para ler o Regedit do windows não esta lendo mais....

    Mensagem  Pedromelo em 26/4/2019, 17:55

    Boas

    Mais uma vez volto a me repetir

    o ERRO nao esta na VERSAO do WINDOWS e sim na VERSAO do OFFICE.

    Pode ser que a chave nao exista no WINDOWS 32 BITS. (como falei nao tenho instalado o Windows 32bits)

    Sendo assim esqueça o WINDOWS 32bits.

    O ERRO esta em usar o OFFICE 32 bits no WINDOWS 64bits. SOMENTE ISSO!
    E pelo que consegui perceber tem a ver com permiçoes que o OFFICE 32bits acaba por nao ter para poder ler algumas chaves do registro.

    Primeiro preciso corrigir o problema no windows 64bits. So depois irei me preocupar se no 32bits a chave esta ou nao no mesmo local....

    Obrigado
    Pedro Melo
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6164
    Registrado : 15/03/2013

    Funçao para ler o Regedit do windows não esta lendo mais.... Empty Re: Funçao para ler o Regedit do windows não esta lendo mais....

    Mensagem  ahteixeira em 26/4/2019, 18:06

    Olá,

    Pesquise por wow6432node registry

    Abraço

    Conteúdo patrocinado

    Funçao para ler o Regedit do windows não esta lendo mais.... Empty Re: Funçao para ler o Regedit do windows não esta lendo mais....

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 18/7/2019, 00:03