Wie kann ich eine Konsolenanwendung immer als Administrator ausführen lassen?

8

Ich habe eine Konsolenanwendung, die entwickelt wurde, um von einer ERP-Software aufgerufen zu werden.

Sie rufen meine App in der erp auf und wenn sie es tun, bekomme ich immer Fehler, die mit der unzureichenden Berechtigung zusammenhängen.

Ich habe das Kontrollkästchen "Dieses Programm als Administrator ausführen" in den Eigenschaften der exe für alle Benutzer aktiviert, aber das Ergebnis ist das gleiche.

Ich habe etwas über das Hinzufügen eines Manifests gelesen, das die App zur Eingabe des uac-Dialogs auffordert, aber das ist nicht das, was ich möchte, weil die App von erp auf dem Server aufgerufen wird und Clients das Dialogfeld auf dem Server nicht sehen / p>

Kann mir jemand erklären, wie diese Konsolen-App immer als Administrator ausgeführt wird?

    
Marco 13.03.2013, 18:14
quelle

3 Antworten

7

Verstehen Sie zunächst, dass es zu einem bestimmten Zeitpunkt in diesem Prozess einen UAC-Dialog geben wird. Es gibt keine Möglichkeit, es zu vermeiden. Es gibt ein paar Ansätze, die Sie ergreifen können:

  • Lassen Sie die Leute die ERP-Software erhöht ausführen. Ich nehme das nur der Vollständigkeit halber auf. Es ist schrecklich, bei jeder Ausführung der App der UAC-Eingabeaufforderung zustimmen zu müssen, wenn Sie die Berechtigungen normalerweise nicht benötigen. Es wäre jedoch ein praktischer Schnelltest, wenn Sie bestätigen möchten, dass die App funktioniert, wenn Ihre App erhöht ist. Alles, was von einem erhöhten Prozess gestartet wird, ist erhöht. Wenn Ihre App weiterhin die Fehlermeldung erhält, beheben Sie dies nicht, indem Sie erhöhen.
  • Ändern Sie den Code in der ERP-App, um Ihre App erhöht zu starten. Sie erwähnen C #. Starten mit dem runas Verb ist ein Ansatz hier. Dies belastet den ERP-Entwickler und kann möglicherweise nicht dazu in der Lage sein.
  • Fügen Sie Ihrer App ein Manifest hinzu. Sie können eine davon einbetten, oder wenn Ihre App foo.exe heißt, erstellen Sie einfach eine foo.exe.manifest-Datei mit der entsprechenden requestedExecutionLevel. Um eine einzubetten, verwenden Sie die Eigenschaftenseite Ihres C # -Projekts, um die richtige Art von Manifest auszuwählen. Stellen Sie sicher, dass Sie gestartet werden, wobei UseShellExecute auf "true" gesetzt ist oder dass das Manifest ignoriert wird.

Wenn Sie die erste Option auswählen, wird die UAC-Eingabeaufforderung bei jedem Start der ERP-Anwendung angezeigt. Nicht gut. Wenn Sie die zweite oder dritte auswählen, wird die UAC-Eingabeaufforderung immer dann angezeigt, wenn Ihre Konsolenanwendung über die ERP-App gestartet wird. Wahrscheinlich akzeptabel.

Eine andere Sache, die Sie in Betracht ziehen könnten, ist, viel genauer zu untersuchen, warum die Konsolen-App Administratorrechte benötigt. Schreibst du in die Wurzel von C oder in Programme? Aktualisieren Sie einen Registrierungsschlüssel in HKLM? Was auch immer du machst, warum machst du es so? Sofern Ihre App nichts installiert oder konfiguriert (in diesem Fall ist eine UAC-Eingabeaufforderung gut und ordnungsgemäß), sollten Sie versuchen, sie so anzupassen, dass sie in den Vorbenutzerspeicher schreibt und keine Erhöhung benötigt. Dann wirst du dich nicht mehr darüber sorgen müssen, wie man es erhöht startet, auf jeden Fall.

    
Kate Gregory 13.03.2013, 18:53
quelle
22

Fügen Sie in Ihre Projektanwendungsdatei (Hinzufügen - & gt; Neues Element - & gt; Allgemein - & gt; Anwendungsmanifestdatei) hinzu und fügen Sie den folgenden Knoten in die app.manifest:

ein %Vor%

Ссылка

    
Alexey 13.03.2013 18:31
quelle
0

Erstellen Sie eine Batchdatei, die etwas wie folgt enthält:

%Vor%

Wo% USERDOMAIN% und% USERNAME% durch Ihre Administratorkontodaten ersetzt werden.

Und führen Sie das stattdessen?

    
AnthonyLambert 13.03.2013 18:18
quelle