Sistema em Delphi 6 fazer rodar no Windows Vista...
Olá, boa tarde.
Tenho um sistema todo desenvolvido em Delphi 6.
Até o Win XP ele roda normal, mais no Vista tenho que fazer estes procedimentos:
Existe alguma forma de fazer ele rodar direto no Windows Vista sem precisar alterar essas configurações?
Abraços!!!
Tenho um sistema todo desenvolvido em Delphi 6.
Até o Win XP ele roda normal, mais no Vista tenho que fazer estes procedimentos:
Existe alguma forma de fazer ele rodar direto no Windows Vista sem precisar alterar essas configurações?
Abraços!!!
Ronithd
Curtidas 0
Respostas
Rodc
01/04/2008
Apenas desabilitando o Controle de Usuário (UAC) nas configurações dos usuários.
Mas o correto é você verificar o que seu sistema está fazendo que é preciso ter acesso de administador e corrigir.
Por exemplo, não pode gravar dados dados nas pastas que estão em ´Arquivos de Programas´. Não pode alterar registros globais, apenas HKEY_CURRENT_USER e HKEY_LOCAL_MACHINE. Não pode gravar arquivos nas pastas que estão em C:\Windows. Entre outras considereções.
Eu estou com este mesmo problema, pois preciso usar uma função da API que apenas Admistrador tem acesso. Estou pesquisando uma função que requisita direitos de Administrador para o programa, porém o usuário terá de confirmar a abertura do programa toda vez que este for iniciado, assim como ocorre com os instaladores.
Mas desabilitando o UAC todos estes problemas acabam.
Mas o correto é você verificar o que seu sistema está fazendo que é preciso ter acesso de administador e corrigir.
Por exemplo, não pode gravar dados dados nas pastas que estão em ´Arquivos de Programas´. Não pode alterar registros globais, apenas HKEY_CURRENT_USER e HKEY_LOCAL_MACHINE. Não pode gravar arquivos nas pastas que estão em C:\Windows. Entre outras considereções.
Eu estou com este mesmo problema, pois preciso usar uma função da API que apenas Admistrador tem acesso. Estou pesquisando uma função que requisita direitos de Administrador para o programa, porém o usuário terá de confirmar a abertura do programa toda vez que este for iniciado, assim como ocorre com os instaladores.
Mas desabilitando o UAC todos estes problemas acabam.
GOSTEI 0
Rodc
01/04/2008
Acabei de encontrar o problema do meu sistema. Eu fazia uso da função RegOpenKeyEx() para ler um registro do windows e na abertura do registro estava passando KEY_ALL_ACCESS. Porém o usuário não todos os direitos sobre o registro, daí a necessidade de rodar como adimistrador.
Troquei o parâmetro KEY_ALL_ACCESS por KEY_QUERY_VALUE (apenas consulta) e o programa funcionou belezinha.
Verifica no seu programa se ele não está tentando acessar algum registro do windows.
Troquei o parâmetro KEY_ALL_ACCESS por KEY_QUERY_VALUE (apenas consulta) e o programa funcionou belezinha.
Verifica no seu programa se ele não está tentando acessar algum registro do windows.
GOSTEI 0
Ronithd
01/04/2008
Olá, tudo bom??
Não estou utilizando nenhum registro do Windows, mas estou gravando os dados no diretorio (Arquivos de programas) e também gravo arquivos de imagem e .ini.
Existe alguma coisa que eu possa fazer para funcionar direto?
Não estou utilizando nenhum registro do Windows, mas estou gravando os dados no diretorio (Arquivos de programas) e também gravo arquivos de imagem e .ini.
Existe alguma coisa que eu possa fazer para funcionar direto?
GOSTEI 0
Rodc
01/04/2008
Na verdade, quando você grava algum arquivo na pasta meus documentos o Windows Vista automaticamente redireciona o arquivo para a pasta ´C:\Users\nome_do_usuário\AppData\VirtualStore\Programs Files\...´. Isto é transparente para o seu programa. O que deve realmente ser proibido é gravar na pasta de instalação do Windows.
Mas afinal, qual erro ocorre no seu programa? Tente tirar estes acessos a arquivos e vá testando até encontrar a rotina que gera o erro.
Mas afinal, qual erro ocorre no seu programa? Tente tirar estes acessos a arquivos e vá testando até encontrar a rotina que gera o erro.
GOSTEI 0
Ronithd
01/04/2008
O problema é que meu sistema é de pacote e faz hoje todas as atualizações automáticas via net que manda direto para as pastas dele.
www.softwareveterinario.com.br
Eu utilizo o Inno setup para gerar a instalação do programa, existe algum comando que eu possa dar os privilegios de administrador para o executavel do programa?
www.softwareveterinario.com.br
Eu utilizo o Inno setup para gerar a instalação do programa, existe algum comando que eu possa dar os privilegios de administrador para o executavel do programa?
GOSTEI 0
Rodc
01/04/2008
Mas se ele copia os arquivos para a pasta ´Arquivos de Programas´ não deveria estar gerando problema. O único problema é que os arquivos irão para o VirtualStore. Dê uma melhor analisada no seu programa que não deve ser isto!
Quanto a requisitar direitos de administrador para o sistema é possível sim! Um exemplo é o instalador. Porém o usuário teria de digitar a senha de administrador toda vêz que fosse abrir o programa.
Se eu me lembrar, amanhã trago um código que se não me engano ele requisita direitos de administrador para o programa.
PS. Parabéns pelo software de veterinária. Olhei as imagens no site e parece ser um software bem legal.
Quanto a requisitar direitos de administrador para o sistema é possível sim! Um exemplo é o instalador. Porém o usuário teria de digitar a senha de administrador toda vêz que fosse abrir o programa.
Se eu me lembrar, amanhã trago um código que se não me engano ele requisita direitos de administrador para o programa.
PS. Parabéns pelo software de veterinária. Olhei as imagens no site e parece ser um software bem legal.
GOSTEI 0
Rodc
01/04/2008
O site http://www.videotexto.com.br/forum/viewtopic.php?p=425&sid=161838732e931d6ae8854729536cdd8b tem um código que requer direito de PowerUser para poder desligar o computador.
Ele usas as funções OpenProcessToken() e LookupPrivilegeValue() para ter este acesso.
Tente usar estas funções e ao invés de passar ´SeShutdownPrivilege´ passe ´SeShutdownPrivilege´.
Ele usas as funções OpenProcessToken() e LookupPrivilegeValue() para ter este acesso.
Tente usar estas funções e ao invés de passar ´SeShutdownPrivilege´ passe ´SeShutdownPrivilege´.
GOSTEI 0
Ronithd
01/04/2008
ok amigo, vou dar uma fuçada aqui
GOSTEI 0