Clipper On Line • Ver Tópico - Configurar aplicativo com Administrador(RUNASAdmin).

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

 

Configurar aplicativo com Administrador(RUNASAdmin).

Mensagempor rochinha » 12 Jun 2014 17:22

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 é:
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:
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:
...
   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()
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 fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4548
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 808 vezes
Mens.Curtidas: 246 vezes

Configurar aplicativo com Administrador(RUNASAdmin).

Mensagempor sambomb » 13 Jun 2014 10:20

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. ;)

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 de usuário

sambomb
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 250
Data de registro: 24 Out 2008 16:02
Cidade/Estado: Itaocara - RJ - Brasil
Curtiu: 16 vezes
Mens.Curtidas: 10 vezes

Configurar aplicativo com Administrador(RUNASAdmin).

Mensagempor rochinha » 15 Jun 2014 17:14

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():
#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 fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4548
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 808 vezes
Mens.Curtidas: 246 vezes

Configurar aplicativo com Administrador(RUNASAdmin).

Mensagempor fladimir » 18 Mai 2016 18:20

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 de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2436
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 157 vezes

Configurar aplicativo com Administrador(RUNASAdmin).

Mensagempor rochinha » 18 Mai 2016 19:09

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 fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4548
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 808 vezes
Mens.Curtidas: 246 vezes

Configurar aplicativo com Administrador(RUNASAdmin).

Mensagempor janio » 21 Jun 2016 14:06

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 de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

Configurar aplicativo com Administrador(RUNASAdmin).

Mensagempor rochinha » 21 Jun 2016 16:19

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 fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4548
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 808 vezes
Mens.Curtidas: 246 vezes

Configurar aplicativo com Administrador(RUNASAdmin).

Mensagempor janio » 21 Jun 2016 19:19

Ótimo, Rochinha!

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

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes




Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 23 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro