EXECUTAR COMO ADM

 Tópico anterior Próximo tópico Novo tópico

EXECUTAR COMO ADM

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#486906 - 04/02/2019 14:16:14

MAXCIM
GUARULHOS
Cadast. em:Dezembro/2003


Olá amigos.

a Minha Aplicação  VB.NET , para rodar plenamente necessita de rodar como ADM.
acessar registro do Windows,  trocar arquivos na rede, gravar e apagar na pasta  do APP  ( arquivos de programas entre outros)

para isso acrescentei arquivo manifesto com essa linha,   O usuário tem que ser ADM  ou com  privilégios de ADM

   <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

  tudo funciona perfeitamente  , até um cliente ter a necessidade  que algumas maquinas rodasse  com usuário limitado.

ai vem a questão:

como configurar para que algumas maquinas rodem como ADM     e outras  ( nível hierárquico inferior)  rodem como usuário simples.

explico:  
usuários administrativos, usam recursos, como Transferência de arquivos  com o servidor, Emissão de NF-E  ( acessa registro do Windows para configuração)     e  geralmente logam como ADM.
ja usurários, simples como produção, almoxarifado, expedição entre outros. o sistema não tem necessidade de logar como ADM.

como base na linha do Manifesto,     daria para programar e fazer facultativo?


desde já agradeço.



#486915 - 05/02/2019 08:21:24

ALEVALE
JUNDIAI
Cadast. em:Março/2012


Bom dia,

Por questões de segurança realmente você terá limitações, pois imagina se alguém faz um vírus e força ele para rodar como administrador apenas alterando uma linha de comando, seria um caos neh, não me recordo até aonde são as limitações do "requestedExecutionLevel" mas deve algo com a UAC do Windows enfim.

Minhas sugestões:
- Se for realmente necessário mexer no registro do Windows use a chave HKEY_CURRENT_USER ela é criada para cada usuário e ele tem acesso a realizar alterações.

HKEY_LOCAL_MACHINE -> É utilizada para o computador como um todo e por isso você tem limitações, pois ao alterar algo aplica a todos os usuários.

Eu ainda acho que deveria mudar a lógica do seu sistema, armazenando os parâmetros no banco de dados ou até mesmo no APP.CONFIG para evitar esse tipo de problema.

Coloque os parâmetros de comunicação com o banco de dados no app.config e os parâmetros do sistema leia direto no BD.

---------------------------------------------------------------
"Já está provado por A+B que A+B num prova nada"
---------------------------------------------------------------

#486916 - 05/02/2019 09:06:59

MAXCIM
GUARULHOS
Cadast. em:Dezembro/2003


Bom dia, Alevale,

funciona,  a linha  <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />  funciona perfeitamente.

eu quero é uma maneira de fazer isso parametrizável.

ha maquina que necessito que rode como ADM  e outras com usuário Comum.



#486917 - 05/02/2019 09:19:41

NILSONTRES
SAO PAULO
Cadast. em:Março/2012


Eu só mando a cada cliente definir no atalho ou .exe rodar como adm, é quebra galho mas funciona.



#486918 - 05/02/2019 10:00:24

OCELOT
SOROCABA
Cadast. em:Março/2012


Um programa desse tipo no geral nunca deveria precisar de permissão de administrador, no máximo seria na hora de instalar uma atualização.

Você pode por exemplo colocar as configurações que precisa fazer no registro em um programa separado, se você precisa ficar mudando elas o tempo todo então isso é um erro e você deveria ver como não precisar fazer isso o tempo todo, geralmente configurações no HKEY_LOCAL_MACHINE devem ser feitas apenas durante a instalação do programa.

Arquivos na pasta do programa nunca deveriam ser alterados, os programas devem criar um pasta dentro do AppData para gravar arquivos que ele precise para funcionar, dentro do Arquivos de Programas devem ficar apenas arquivos que nunca são alterados.

De mais você pode deixar o seu programa sem essa alteração no manifest pra ele poder executar normalmente e usar uma biblioteca tipo o UACHelper pra te ajudar a verificar se está rodando com privilégios elevados, se não reiniciar o programa pedindo a elevação de privilégios, no caso dessa biblioteca ela tem um método chamado StartElevated pra executar um programa como ADM.

Só tem que ver que você tem que realmente reiniciar o programa pra elevar ele, ele roda inicialmente sem permissão de ADM, então você decide iniciar uma nova instância com permissões elevadas e fecha a anterior no seu código.



#486932 - 05/02/2019 14:25:44

FABRICIOWEB
BELO HORIZONTE
Cadast. em:Novembro/2011


eu faço isso pelo inno setup  nao sei se ajuda em qualquer coisa talvez  haja alguma forma de colocar um parâmetro no inno para escolha

com compatibilidade

Root: "HKCU"; Subkey: "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"; ValueType: "string"; ValueName: "C:\SISTEMA BORDADO\ideiaslogo.exe";  ValueData: "WINXPSP3 RUNASADMIN";  

sem compatibilidade
Root: "HKCU"; Subkey: "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"; ValueType: "string"; ValueName: "C:\SISTEMA BORDADO\ideiaslogo.exe";  ValueData: "RUNASADMIN";  



 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário