Domanda

Voglio dare un file (già presente nel computer .exe client) le autorizzazioni per eseguire sempre con autorizzazioni amministrative.

Si prega di notare che il file vuole dare i permessi è già sul computer di destinazione. e voglio cambiare i permessi di quel file attraverso un altro programma scritto in C # e ha le autorizzazioni amministrative per fare tutto.

gentilmente fatemi sapere come farlo Sto usando questo codice

        System.Security.AccessControl.FileSecurity fs = File.GetAccessControl(@"c:\inam.exe");
        FileSystemAccessRule fsar = new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Allow);
        fs.AddAccessRule(fsar);
        File.SetAccessControl(@"c:\inam.exe", fs);

questo codice cambiare i permessi in modo corretto, ma ancora quando ho eseguire inam.exe dopo l'esecuzione di questo codice l'UAC non è apparso e anche la sopraelevazione inam.exe eseguire le operazioni amministrative.

in realtà ho già implementato un'applicazione su più di 10.000 clienti in modo vuole rilasciare una patch per risolvere il problema dei diritti amministrativi.

È stato utile?

Soluzione

Crea un file manifesto (vedi http://www.gregcons.com/KateBlog/AddingAManifestToAVistaApplication aspx tra gli altri posti) e il nome Whatever.exe.manifest e metterlo nella stessa cartella del file EXE. Il nanifest dovrebbe impostare il requestedExecutionLevel a requireAdministrator. Tutto stabilito.

Se si possiede l'altro exe, è possibile incorporare il manifesto durante la sua compilazione. Questo è quasi banale in Visual Studio 2008 e fino. Vedere la scheda Applicazione e discesa i manifesti discesa. Ci sono le istruzioni nelle vicinanze. Anche quando si utilizza VS 2008 per aggiungere un manifesto al progetto non c'è bisogno di inserire tutte le XML, basta copiare il livello di esecuzione adeguato richiesto dai commenti che vengono generati per voi.

Altri suggerimenti

Esegui con privilegi di amministratore non è un permesso di file.

Questo è di solito configurato aggiungendo un manifest (sia alle risorse Win32 in EXE, o come un manifesto esterno). Questo file manifesto può indicare se le esigenze di applicazione per eseguire elevati o meno.

Non sono del tutto sicuro in cui Windows immagazzina il "Esegui questo programma come amministratore" impostazione di compatibilità.

Utilizzando un file manifesto è l'approccio migliore, ma una alternativa sarebbe quella di impostare a livello di codice il "Esegui questo programma come amministratore" bandiera (l'opzione si trova nella scheda Compatibilità di proprietà di un EXE), impostando una semplice chiave di registro. È necessario creare un valore stringa (REG_SZ) sotto l'uno di questi tasti (se si desidera che l'impostazione sia per utente o per macchina, rispettivamente):

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ Livelli

o

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ Livelli

Il nome delle esigenze di valore per essere il percorso completo dei eseguibili (se il percorso contiene spazi, non circondare il percorso con le virgolette), ei dati del valore deve contenere il RUNASADMIN stringa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top