Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: giosch - Settembre 05, 2012, 03:51:56 pm

Titolo: richesta privilegi di admin tramite manifest
Inserito da: giosch - Settembre 05, 2012, 03:51:56 pm
un mio programma controlla gli aggiornamenti di una serie di file, ma sia il setup che l'esecuzione normale richiedono il livello di esecuzione Amministratore. Siccome molti utenti non lo fanno nonostante io glielo dica e dopo si lamentano perché non va, volevo fare in modo che all'avvio chiedesse le credenziali di admin per accedere ai privilegi. Ho letto che si può fare tramite manifest, ma nn sò da dove cominciare, anche se ho cercato parecchi in internet. Il mio progetto non é un applicazione, ma un programma top-down normale.
In attesa di risposte,
Giosch
Titolo: Re:richesta privilegi di admin tramite manifest
Inserito da: xinyiman - Settembre 05, 2012, 04:37:38 pm
un mio programma controlla gli aggiornamenti di una serie di file, ma sia il setup che l'esecuzione normale richiedono il livello di esecuzione Amministratore. Siccome molti utenti non lo fanno nonostante io glielo dica e dopo si lamentano perché non va, volevo fare in modo che all'avvio chiedesse le credenziali di admin per accedere ai privilegi. Ho letto che si può fare tramite manifest, ma nn sò da dove cominciare, anche se ho cercato parecchi in internet. Il mio progetto non é un applicazione, ma un programma top-down normale.
In attesa di risposte,
Giosch

In quale ambiente lavori?! Linux, Windows o Mac?!
Titolo: Re:richesta privilegi di admin tramite manifest
Inserito da: giosch - Settembre 05, 2012, 06:51:35 pm
Windows 7
Titolo: Re:richesta privilegi di admin tramite manifest
Inserito da: Microges2000 - Settembre 06, 2012, 10:55:35 am
Copio ed incollo la risposta che ti ho dato sull'altro forum in maniera da aiutare anche chi stà qui....

Allora, vediamo..... questo procedimento, anche se un pochino elaborato (ma non troppo dai), è valido sia sotto Delphi che Lazarus quindi fai un po' te...

Premessa: Mettiamo che il tuo dpr (dpr in Delphi ovviamente, in Lazarus sarà lpr ma è lo stesso) si chiama program1 che da origine al
programma Program1.exe

1) Creati, sotto la directory contenente il dpr, un file di nome
Program1.manifest cosi' composto:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.1.1.1"
processorArchitecture="X86"
name="Program1.exe"
type="win32"/>
<description>elevate execution level</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

2) Creati un file di risorse chiamato Program1.rc e contenente la
seguente linea:

1 24 "Program1.manifest"

3) Apri una shell a dos e posizionati sulla cartella contenente i file
.manifest e .dc e digita:

brcc32 Program1.rc -fo Program1.rec

- brcc32 è il compilatore di risorse per Windows, se usi Linux chiedi al forum di Lazarus in quanto non so come si chiama -

4) Ora apri il sorgente del tuo progetto ed inserisci la nuova risorsa
con inserendo "{$R Program1.rec}" dopo la stringa {$R *.res} che troverai

5) Esegui un build del progetto

Ora il file .exe richiede i permessi di amministratore per essere eseguito

Bye