Frage

Ich mag eine Datei geben (bereits auf dem Client-Computer .exe) Berechtigungen immer mit administrativen Berechtigungen auszuführen.

Bitte beachten Sie, dass die Datei i will Berechtigungen geben, ist bereits auf Zielrechner. und ich möchte in c # geschrieben Berechtigungen dieser Datei durch ein anderes Programm ändern und es hat administrative Berechtigungen, alles zu tun.

Lassen Sie mich freundlich wissen, wie es zu tun Ich benutze diesen Code

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

Dieser Code wird die Berechtigungen korrekt ändern, aber immer noch, wenn ich ausführen inam.exe nach dem Ausführen dieses Codes der UAC nicht erschienen und auch die inam.exe Überhöhung führt administrative Vorgänge.

Ich habe tatsächlich bereits im Einsatz eine Anwendung auf mehr als 10.000 Kunden, so will einen Patch veröffentlichen, die Administratorrechte Problem zu lösen.

War es hilfreich?

Lösung

Erstellen Sie eine Manifest-Datei (siehe http://www.gregcons.com/KateBlog/AddingAManifestToAVistaApplication aspx unter anderem) und nennen sie es Whatever.exe.manifest und es im selben Ordner wie die exe setzen. Die nanifest sollte die requestedExecutionLevel auf requireAdministrator gesetzt. Alles bereit.

Wenn Sie die anderen exe besitzen, können Sie das Manifest einbetten, wenn Sie es bauen. Dies ist fast trivial in Visual Studio 2008 und höher. Siehe die Registerkarte Anwendung und Dropdown die Manifests Dropdown. Es gibt in der Nähe Anweisungen. Auch wenn Sie VS 2008 verwenden, um ein Manifest zu einem Projekt hinzuzufügen, Sie müssen nicht alle XML-Typ, Sie kopieren einfach die entsprechende angeforderte Ausführungsebene aus den Kommentaren, die für Sie generiert werden.

Andere Tipps

Ausführen mit Administratorrechten ist keine Dateiberechtigungen.

Diese in der Regel so konfiguriert durch Hinzufügen von eine Manifest-Datei (entweder auf die Win32-Ressourcen in der EXE-Datei oder als externes Manifest). Diese Manifest-Datei kann angeben, ob die Anwendung benötigt erhöht laufen oder nicht.

Ich bin nicht ganz sicher, wo Windows-stashes des „Programm als Administrator“ Kompatibilitätseinstellung.

eine Manifest-Datei ist der beste Ansatz, aber eine Alternative wäre, programmatisch festgelegt das „Programm als Administrator“ Flag (die Option, die Sie in der Registerkarte Kompatibilität von Eigenschaften eines EXE finden), indem Sie eine einfache Einstellung Registrierungsschlüssel. Sie benötigen einen String-Wert (REG_SZ) unter eine dieser Tasten erstellen (wenn Sie die Einstellung pro Benutzer sein wollen oder pro Maschine, respectively):

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows NT \ Currentversion \ AppCompatFlags \ Ebene

oder

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ Currentversion \ AppCompatFlags \ Ebene

Der Name der Wert Bedürfnisse ausführbare Datei der vollständige Pfad sein (wenn der Pfad Leerzeichen enthält, nicht umgeben den Weg nicht mit Anführungszeichen), und die Daten des Wertes muss die Zeichenfolge RUNASADMIN enthalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top