Wenn ich versuche, eine neue Aufgabe im Aufgabenplaner über die Java ProcessBuilder-Klasse zu erstellen, erhalte ich einen Windows Vista-Zugriff verweigert. Auf XP funktioniert es gut.
Wenn ich die Option "Als Administrator ausführen" verwende, läuft sie auch unter Vista.
Dies ist jedoch ein zusätzlicher Schritt, den die Benutzer möglicherweise nicht wissen. Wenn der Benutzer nur auf das App-Symbol doppelklickt, wird der Zugriff verweigert. Meine Frage ist, wie kann ich eine Java-Anwendung erzwingen, Admin-Privilegien direkt nach dem Start zu erhalten?
Ich bin mir nicht sicher, ob Sie das programmatisch machen können. Wenn Sie über ein Installationsprogramm für Ihre App verfügen, können Sie den Registrierungsschlüssel hinzufügen, der als Administrator ausgeführt werden soll:
Pfad: HKEY_CURRENT_USER \ Software \ Microsoft \ Windows NT \ Currentversion \ Appcompatflags \ Ebenen
Taste: & lt; & lt; Vollständiger Pfad zu exe & gt; & gt;
Wert: RUNASADMIN
Geben Sie Folgendes ein: REG_SZ
Haben Sie überlegt, Ihre Java-Anwendung mithilfe von launch4j in eine EXE-Datei zu verpacken? Auf diese Weise können Sie eine Manifestdatei einbetten, mit der Sie die Ausführungsstufe für Ihre ausführbare Datei festlegen können. Mit anderen Worten, Sie steuern die Berechtigungen, die Ihrer laufenden Anwendung gewährt werden sollten, und weisen das Betriebssystem an, "Als Administrator auszuführen", ohne dass der Benutzer dies manuell tun muss.
Zum Beispiel ...
build.xml:
%Vor%myappConfig.xml:
%Vor%myapp.manifest:
%Vor%Siehe Ссылка und die Website launch4j für Details zum Modus.
Obwohl die Antwort von FreeCouch gut ist, hatte ich ein Problem und dachte darüber nach, es hier zu platzieren, damit andere das nächste Mal leicht profitieren können.
Um Administrator-Berechtigung in Java zu bekommen, so weit ich die Lösung gefunden habe, wickle die * .jar innerhalb einer * .exe mit einem Programm wie Launch4J und verbinde Manifest damit.
Um eine Manifest-Datei zu erstellen, öffnen Sie einen beliebigen Texteditor wie Notepad und fügen Sie diese Zeilen ein und speichern Sie sie mit dem Dateinamen zusammen mit der Erweiterung für zB: myApplication.exe.manifest
%Vor% Fügen Sie in Launch4J auf der Registerkarte Basic
diese Datei in der Wrapper-Manifest-Option hinzu.
Ich habe noch nicht die beste Lösung gefunden. Aber ich habe eine Alternative zu "James Van Huis". Verwenden Sie stattdessen RUNASINVOKE, damit Sie nicht jedes Mal, wenn Sie die App ausführen, die Eingabeaufforderung Zulassen / Verweigern sehen müssen.
Hinweis: Sie müssen immer Admin sein, das, was ich zu lösen versuche
Verwenden Sie das launch4j Gradle Plugin
Besonders wenn Sie Gradle bereits verwenden, ist es einfach, das launch4j-Plugin anzuwenden, um das Problem zu beheben.
Erstellen Sie wie in freecouch eine Datei myapp.manifest
mit
Dann wenden Sie das Gradle-Plugin an, indem Sie es zu Ihrem build.gradle
oder, wenn du Kotlin Gradle DSL benutzt, zu deinem build.gradle.kts
:
Tags und Links java windows-vista scheduler access-denied