Configurar aplicativo com Administrador(RUNASAdmin).

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Configurar aplicativo com Administrador(RUNASAdmin).

Mensagem por rochinha »

Amiguinhos,

Para rodar aplicativos como administrador a mesma precisa estar configurada no registro e descobri uma chave no registro que faz isto.

Portanto saquei a informação e posto aqui para que testem e vejam se funciona.

O conteúdo do arquivo .REG que pode ser executado via Prompt de comando é:

Código: Selecionar todos

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\PASTA\\SISTEMA.EXE"="RUNASADMIN"
[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\C:\PASTA]
"sistema.exe"="RUNASADMIN"
Onde sistema é o nome de seu aplicativo e pasta é o nome da pasta que esta o mesmo.

Pensando em automatizar criei uma função em meu sistema(Fivewin), que pode ser implementada por todos, na linguagem preferida.

Função RunASS:

Código: Selecionar todos

FUNCTION RunASS( cCaminhoCompleto, lXPCompativel )
   *****************************************************
   * Grava o registro do aplicativo 
   *****************************************************
   DEFAULT lXPCompativel := .F.
   LOCAL cRunName, cRunKey, cRegKey
   cRegRoot := HKEY_CURRENT_USER
   cRegKey  := "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"
   cRegValue:= ["]+cCaminhoCompleto+["="]+iif(lXPCompativel,"WINXPSP2 ","")+[RUNASADMIN"]
   SETREGVAR( cRegRoot, cRegKey, "EnableLUA", cRegValue )
   cRegValue:= ["]+cFileName(cCaminhoCompleto)+["="]+iif(lXPCompativel,"WINXPSP2 ","")+[RUNASADMIN"]
   SETREGVAR( cRegRoot, cRegKey, "EnableLUA", cRegValue )
   RETURN nil
Os parâmetros são:

cCaminhoCompleto - Caminho completo do aplicativo, exemplo: c:\pasta\subpasta\outrapasta\sistema.exe
lXPCompativel - colocar .t. se caso quer forçar execução em modo de compatibilidade

Exemplo:

Código: Selecionar todos

...
   RunASS( "c:\pasta\subpasta\outrapasta\sistema.exe", .f. )
...
As funções que usei aqui foram elaboradas para uso com o Fivewin que usa a classe tReg32().

Função SetRegVar()

Código: Selecionar todos

FUNCTION SETREGVAR( nKey, cRegKey, cSubKey, uValue )
   LOCAL oReg, cValue
   nKey := IF( nKey == NIL, HKEY_CURRENT_USER, nKey )
   uValue := IF( uValue == NIL, "", uValue )
   oReg := TReg32():Create( nKey, cRegKey )
   cValue := oReg:Set( cSubKey, uValue )
   oReg:Close()
   RETURN cValue
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
sambomb
Usuário Nível 3
Usuário Nível 3
Mensagens: 250
Registrado em: 24 Out 2008 17:02
Localização: Itaocara - RJ - Brasil

Configurar aplicativo com Administrador(RUNASAdmin).

Mensagem por sambomb »

Pode colocar o Default do nome do exe para GETMODULEFILENAME( GETINSTANCE() )
Assim o padrão vai ser o nome do seu executável, independente de ele ter sido renomeado ou não. ;)

Código: Selecionar todos

FUNCTION RunASS( cCaminhoCompleto, lXPCompativel )
*****************************************************
* Grava o registro do aplicativo
*****************************************************
LOCAL cRunName, cRunKey, cRegKey

   DEFAULT cCaminhoCompleto := GETMODULEFILENAME( GETINSTANCE() ), lXPCompativel := .F.

   cRegRoot := HKEY_CURRENT_USER
   cRegKey  := "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"
   cRegValue:= ["]+cCaminhoCompleto+["="]+iif(lXPCompativel,"WINXPSP2 ","")+[RUNASADMIN"]
   SETREGVAR( cRegRoot, cRegKey, "EnableLUA", cRegValue )
   cRegValue:= ["]+cFileName(cCaminhoCompleto)+["="]+iif(lXPCompativel,"WINXPSP2 ","")+[RUNASADMIN"]
   SETREGVAR( cRegRoot, cRegKey, "EnableLUA", cRegValue )
RETURN nil
Imagem

Rca Sistemas - Itaocara - RJ
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Configurar aplicativo com Administrador(RUNASAdmin).

Mensagem por rochinha »

Amiguinhos,

Obrigado Sambomb.
Pode colocar o Default do nome do exe para GETMODULEFILENAME( GETINSTANCE() )
Eis um pequeno exemplo e uma modificação da função RunASS():

Código: Selecionar todos

#include "fivewin.ch"

FUNCTION Main()
   RunASS( GETMODULEFILENAME( GETINSTANCE() ), .f. )
   return .t.

FUNCTION RunASS( cCaminhoCompleto, lXPCompativel )
   *****************************************************
   * Grava o registro do aplicativo 
   *****************************************************
   LOCAL HKEY_CURRENT_USER   := 2147483649
   LOCAL HKEY_LOCAL_MACHINE  := 2147483650
   LOCAL HKEY_CURRENT_CONFIG := 2147483653
   LOCAL KEY_ALL_ACCESS      := 983139
   LOCAL cRunName, cRunKey, cRegKey
   DEFAULT lXPCompativel := .F.
   cRegRoot := HKEY_CURRENT_USER
   cRegKey  := "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"
   cRegValue:= iif(lXPCompativel,"WINXPSP2 ","")+[RUNASADMIN]
   SETREGVAR( cRegRoot, cRegKey, cCaminhoCompleto, cRegValue )
   RETURN .t.

FUNCTION SETREGVAR( nKey, cRegKey, cSubKey, uValue )
   LOCAL oReg, cValue
   nKey := IF( nKey == NIL, HKEY_CURRENT_USER, nKey )
   uValue := IF( uValue == NIL, "", uValue )
   oReg := TReg32():Create( nKey, cRegKey )
   cValue := oReg:Set( cSubKey, uValue )
   oReg:Close()
   RETURN cValue
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Configurar aplicativo com Administrador(RUNASAdmin).

Mensagem por fladimir »

No caso colocaria pra chamar a função q define o App pra rodar como administrador no inicio da mesma e depois o sistema continua normalmente ou teria q reiniciar o micro?
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Configurar aplicativo com Administrador(RUNASAdmin).

Mensagem por rochinha »

Amiguinhos,

Aqui é apresentado de forma programática o salvamento destas características no registro direto de seu aplicativo.

Dependendo do uso que fará voce pode usar as dicas colocadas em Reiniciar sistema que saiu do ar brutalmente.

Onde diz "RUNAS" coloque "RUNASS" caso não funcione.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Configurar aplicativo com Administrador(RUNASAdmin).

Mensagem por janio »

Tem alguma função em harbour puro que substitua essa função/classe do fivewin (tReg32)?

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Configurar aplicativo com Administrador(RUNASAdmin).

Mensagem por rochinha »

Amiguinhos,

janio
Não consigo olhar no código do meu sistema porque o hd com toda minha vida parou.

Lá sei que tenho vários códigos com métodos de escrita e leitura do registro do windows.

Mas se quiser usar o regedit.exe voce poderá mandar os comandos contidos em um arquivo .REG contendo os caminhos, pastas e chaves que queres modificar:

Sintaxes:
Exporta todo o registro(backup do registro incluindo o usuário corrente)
REGEDIT /E pathname

Exporta parte do registro(somente um caminho desejado)
REGEDIT /E pathname "RegPath"

Importa script de registro(geralmente um arquivo .REG) de forma interativa.
REGEDIT pathname

Importação silenciosa
REGEDIT /S pathname

Abre a GUI/Tela do aplicativo
REGEDIT

Permite abrir multiplas sessões do aplicativo
REGEDIT /m

Chaves:
/E : (E)xporta
/S : Importação (S)ilenciosa

Você também poderá comandar mudanças no registro usando o comando REG contido na sessão Prompt do MS-DOS. Ao acionar o comando você passa de forma direta comandos como parâmetros.

Neste primeiro momento você usará somente 2(dois) comandos, ADD e DELETE. Para mais comandos basta enviar REG /? ou REG ADD /?:

Sintaxe:

REG ADD [ROOT\]RegKey /v ValueName [/t DataType] [/S Separator] [/d Data] [/f]
REG ADD [ROOT\]RegKey /ve [/d Data] [/f] -- Set the (default) value

REG DELETE [ROOT\]RegKey /v ValueName [/f]
REG DELETE [ROOT\]RegKey /ve [/f] -- Remove the (default) value
REG DELETE [ROOT\]RegKey /va [/f] -- Delete all values under this key

Chaves:
ROOT :
HKLM = HKey_Local_machine (default)
HKCU = HKey_current_user
HKU = HKey_users
HKCR = HKey_classes_root
ValueName : Valor ou sequencia, dentro da chave selecionada que se deseja editar.
/d Data : Dado que se deseja armazenar como "String", inteiro etc
/f : Força atualização sem perguntar.
\\Machine : Nome de uma máquina remota. Caso não use a máquina corrente será usada como destino. Somente as chaves HKLM e HKU são permitidas em máquinas remotas.
FileName : Nome do arquivo que contém/conterá os dados do registro a serem manipulados.
KeyName : Nome da chave que carregará o conteudo salvo.
/S : Lista todas sub-chaves e valores.
/S Separator : Caracter usado para separar multi valores em REG_MULTI_SZ. Default é "\0"
/t DataType : Tipo do dado sendo manipulado, REG_SZ (default) | REG_DWORD | REG_EXPAND_SZ | REG_MULTI_SZ
/reg:32 : Força REG.exe a escrever na localização 32-bit do registro.
/reg:64 : Força REG.exe a escrever na localização64-bit do registro.
Output : /od escreve (somente os (D)iferentes), /os (somente os iguai(S)), /oa (Todos), /on (não escreve nada).


Exemplos:

REG ADD HKCU\Software\SS64 /v Sample /d "some test data"
REG QUERY HKCU\Software\SS64 /v Sample
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v HideFastUserSwitching /t REG_DWORD /d 1


Interessante:

Antes de fazer alterações no registro geralmente o sistema operacional pede para reiniciar a máquina. Para evitar isto, é necessário desativar esta característica fazendo com que as alterações possam ser feitas e finalizadas sem a reinicialização, assim:

RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters ,1 ,True

Resumindo:

Através de programação e alguns comandos RUN você irá programar sua aplicação para "envenenar" o registro.

Lembrando que tudo isto acima explanado exige usuário elevado para modificações.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Configurar aplicativo com Administrador(RUNASAdmin).

Mensagem por janio »

Ótimo, Rochinha!

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Responder