Wie kann ich nach der Installation meines Programms auf einem Clientcomputer die Ausführung meines Programms als Administrator unter Windows 7 erzwingen ?
875
Wie kann ich nach der Installation meines Programms auf einem Clientcomputer die Ausführung meines Programms als Administrator unter Windows 7 erzwingen ?
Antworten:
Sie möchten das Manifest ändern, das in das Programm eingebettet wird. Dies funktioniert unter Visual Studio 2008 und höher: Projekt + Neues Element hinzufügen, wählen Sie "Anwendungsmanifestdatei". Ändern Sie das
<requestedExecutionLevel>
Element in:Der Benutzer erhält die UAC- Eingabeaufforderung, wenn er das Programm startet. Verwenden Sie mit Bedacht; Ihre Geduld kann schnell nachlassen.
quelle
Das Hinzufügen eines
requestedExecutionLevel
Elements zu Ihrem Manifest ist nur die halbe Miete. Sie müssen sich daran erinnern, dass die Benutzerkontensteuerung deaktiviert werden kann. Wenn dies der Fall ist, müssen Sie die Überprüfung auf die alte Art durchführen und einen Fehlerdialog einrichten, wenn der Benutzer kein Administrator ist(rufen
IsInRole(WindowsBuiltInRole.Administrator)
Sie den Thread aufCurrentPrincipal
).quelle
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
als auchIsInRole
, worüber Anders spricht.Die detaillierten Schritte sind wie folgt.
Beachten Sie, dass Sie mit diesem Code die Sicherheitseinstellungen von ClickOnce deaktivieren müssen. Gehen Sie dazu zu Eigenschaften -> Sicherheit -> ClickOnce-Sicherheit
quelle
New Item...
ist keine Option in meinem Installer Service-Projekt. Wie würde ich das App-Manifest hinzufügen? Ich kann es meinem Hauptprojekt hinzufügen, aber nicht dem Installationsprogramm.Ich habe Code implementiert, um dies manuell zu tun:
quelle
Sie können eine Manifestdatei in die EXE-Datei einbetten, wodurch Windows (7 oder höher) das Programm immer als Administrator ausführt.
Weitere Informationen finden Sie in Schritt 6: Erstellen und Einbetten eines Anwendungsmanifests (Application Manifest, UAC) (MSDN).
quelle
Klicken Sie während der Arbeit an Visual Studio 2008 mit der rechten Maustaste auf
Project -> Add New Item
und wählen Sie dannApplication Manifest File
.In der Manifestdatei finden Sie das Tag
requestedExecutionLevel
, und Sie können die Ebene auf drei Werte festlegen:<requestedExecutionLevel level="asInvoker" uiAccess="false" />
ODER
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
ODER
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
Um festzulegen, dass Ihre Anwendung als Administrator ausgeführt wird, müssen Sie die mittlere auswählen.
quelle
Wie per
Sie möchten ein Anwendungsmanifest hinzufügen, wenn Sie noch keines haben oder nicht wissen, wie Sie eines hinzufügen sollen. Da einige Projekte nicht automatisch eine separate Manifestdatei hinzufügen, gehen Sie zunächst zu den Projekteigenschaften, navigieren Sie zur Registerkarte Anwendung und stellen Sie sicher, dass Ihr Projekt das Manifest am unteren Rand des Wasserhahns nicht ausschließt.
quelle
Klicken Sie in Visual Studio 2010 mit der rechten Maustaste auf Ihren Projektnamen. Klicken Sie auf "Windows-Einstellungen anzeigen", um eine Datei mit dem Namen "app.manifest" zu generieren und zu öffnen. Ersetzen Sie in dieser Datei "asInvoker" durch "requireAdministrator", wie in den kommentierten Abschnitten der Datei erläutert.
quelle
Eine andere Möglichkeit, dies nur im Code zu tun, besteht darin, zu erkennen, ob der Prozess als Administrator ausgeführt wird, wie in der Antwort von @NG.. Öffnen Sie dann die Anwendung erneut und schließen Sie die aktuelle.
Ich verwende diesen Code, wenn eine Anwendung nur Administratorrechte benötigt, wenn sie unter bestimmten Bedingungen ausgeführt wird, z. B. wenn sie sich selbst als Dienst installiert. Es muss also nicht die ganze Zeit als Administrator ausgeführt werden, wie es auch die anderen Antworten erzwingen.
Hinweis im folgenden Code
NeedsToRunAsAdmin
ist eine Methode, die erkennt, ob unter den aktuellen Bedingungen Administratorrechte erforderlich sind. Wenn dies zurückgibt,false
erhöht sich der Code nicht von selbst. Dies ist ein wesentlicher Vorteil dieses Ansatzes gegenüber den anderen.Obwohl dieser Code die oben genannten Vorteile bietet, muss er sich selbst als neuer Prozess neu starten, der nicht immer Ihren Wünschen entspricht.
quelle
runas
Benutzerkontensteuerung aktiviert sein muss, damit Sie als Administrator von einem Benutzer ohne Administratorrechte aus starten können. Andernfalls wird sie automatisch mit den aktuellen Benutzerberechtigungen geöffnet (unter Windows 7 64-Bit aktiviert ). Soweit ich das beurteilen kann, können Sie bei deaktivierter Benutzerkontensteuerung und fehlendem Administratorrecht nur die Ausführung in einem geeigneten Moment stoppen.Sie können das Manifest mit den ClickOnce-Sicherheitseinstellungen erstellen und dann deaktivieren:
Nachdem Sie darauf geklickt haben, wird eine Datei im Eigenschaftenordner des Projekts mit dem Namen app.manifest erstellt. Sobald diese erstellt wurde, können Sie die
Enable ClickOnce Security Settings
Option deaktivierenÖffnen Sie diese Datei und ändern Sie diese Zeile:
zu:
Dadurch benötigt das Programm Administratorrechte.
quelle
Dies ist eine vereinfachte Version dieser Antwort von @NG
quelle
Klicken Sie mit der rechten Maustaste auf Ihre ausführbare Datei, gehen Sie zu Eigenschaften> Kompatibilität und aktivieren Sie das Kontrollkästchen "Dieses Programm als Administrator ausführen".
Wenn Sie es als Administrator für alle Benutzer ausführen möchten, gehen Sie in "Einstellungen für alle Benutzer ändern" genauso vor.
quelle