Dal punto di vista dello sviluppatore Il controllo dell'account utente di Windows può essere problematico per alcune parti dell'applicazione Delphi, se l'applicazione non viene eseguita da un amministratore. Una di queste operazioni sta scrivendo nel database del Registro.
devi "richiesta di diritti di amministratore" di creazione di un file manifesto dell'applicazione ....
Windows Vista/7 - Controllo dell'account utente
User Account Control è un componente di sicurezza in Windows Vista . Il controllo dell'account utente consente agli utenti di eseguire attività comuni come non amministratori, denominati utenti standard in Windows Vista e come amministratori senza dover cambiare utente, disconnettersi o utilizzare Esegui come. Per aiutare a prevenire l'installazione invisibile di software dannoso e causare infezioni a livello di computer, Microsoft ha sviluppato la funzionalità UAC.
Dal punto di vista degli sviluppatori le seguenti funzionalità UAC sono importanti:
Tutti i processi vengono avviati come utente standard di default un utente standard non può: file Change in cartelle Programmi file Variazione nelle cartelle di Windows o System32 modifica del registro di sistema in HKLM \ Software Modificare la data e l'ora macchine locali ... l'elenco continua ...
programmazione Modifica del registro di sistema per eseguire l'applicazione su Windows Delphi Sta rtup
Modificando in modo programmatico il registro di Windows, utilizzando l'oggetto TRegistry, è possibile "automagicamente" avviare i programmi ogni volta che viene avviato Windows. La procedura è possibile utilizzare per forza "auto-run-on-Windows-startup" per la vostra applicazione potrebbe essere simile:
procedure RunOnStartup(const sCmdLine: string; bRunOnce: boolean = false; Remove: Boolean = false) ;
var
sKey: string;
Section: string;
const
ApplicationTitle = ”Your Application TITLE”;
begin
if (bRunOnce) then
sKey := 'Once'
else
sKey := '';
Section := 'Software\Microsoft\Windows\CurrentVersion\Run' + sKey + #0;
with TRegIniFile.Create('') do
try
RootKey := HKEY_LOCAL_MACHINE;
if Remove then
DeleteKey(Section, ApplicationTitle)
else
WriteString(Section, ApplicationTitle, sCmdLine) ;
finally
Free;
end;
end;
Su Vista/7, se l'utente che esegue l'applicazione non dispone di diritti di amministratore i il codice sopra sarebbe fallito, a causa di UAC!
Faking UAC Diritti - Come richiedere livello di esecuzione
Anche se l'utente che esegue il codice di cui sopra non è un amministratore, è possibile, come sviluppatore braccio l'applicazione con un particolare tipo di risorsa incorporata: applicazione file manifest. Avere il file manifest assicurerà che l'UAC di Vista consenta l'esecuzione del codice.
Ecco i passaggi:
Creare file XML con seguente contenuto:
<?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="YourApplicationExeName"
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>
Nome questo file XML come YourApplicationName.manifest Creare un file di testo con seguente contenuto: 1 24 "YourApplicationName. manifest "
Nome di questo file di testo come YourApplicationName.RC utilizzando la riga di comando eseguire il seguente comando: brcc 32 YourApplicationName.RC -foYourApplicationName.REC
Questo creerà un nuovo file di risorse chiamato YourApplicationName.REC
Copia questo file nella YourApplicationName.REC al percorso delle risorse della vostra applicazione. Includere questo file di risorse nel DPR di voi applicazione, come come: {$R YourApplicationName.REC}
Infine costruire la vostra applicazione - si è ora pronti per ottenere diritti di amministratore in Windows Vista. Nota 1: nei passaggi precedenti, sostituire "YourApplicationExeName" con il nome effettivo dell'applicazione. Nota 2: i passaggi precedenti creano un file di risorse da memorizzare nel file EXE dell'applicazione. Maggiori informazioni sulle risorse nelle applicazioni Delphi.
saperne di più in http://delphi.about.com/od/delphitips2009/qt/delphi-vista-registry-run-on-startup.htm
Suggerimento: Si potrebbe desiderare di provare a sviluppare con un account non-power-user. Sì, a volte può essere un po 'fastidioso, ma in questo modo ti assicuri che le "sorprese" come quelle che hai appena incontrato non ti colpiscano in faccia. La politica aziendale è in molti negozi di sviluppo per una buona ragione. –
Come si comporterebbe la tua applicazione con Windows 2000 o Windows XP come utente standard? Questo ti guiderà su come dovrebbe comportarsi in Windows Vista o Windows 7 come utente standard. –