2016-05-19 5 views
1

Ist es möglich, eine Aufgabe auszuführen, die eine Erhöhung erfordert (in meinem Beispiel muss ich die Registrierung bearbeiten), ohne das gesamte Fenster erneut zu öffnen? Also ich habe ein CPL-Element, das und von seinen Seiten die Möglichkeit hat, die Einstellungen meiner Anwendung zu bearbeiten (die in die Registrierung geschrieben werden). Ist es möglich, dies nur zu tun, wenn der Benutzer auf apply oder ok klickt? Aber ohne das ganze cpl-Fenster wieder zu öffnen.Können Sie eine Aufgabe ausführen, die eine Erhöhung erfordert, ohne das win32-Fenster erneut zu öffnen?

+1

Wenn Sie die Änderungen anwenden, starten Sie eine weitere Instanz Ihres Control Panel-Elements, indem Sie [ShellExecuteEx] (https://msdn.microsoft.com/en-us/library/windows/desktop/bb762154.aspx) aufrufen (die * runas werden übergeben) * Verb). Sie können eine Befehlszeile übergeben, die besagt, dass andere Prozesse Änderungen anwenden und überhaupt keine GUI anzeigen. Sobald die Änderungen angewendet wurden, beenden Sie den Vorgang. – IInspectable

+0

Ist meine Lösung richtig, oder gibt es einen besseren Weg? – LosBlancoo

+1

Eine alternative geeky Möglichkeit ist die Verwendung der COM-Schnittstelle, die intern von 'ShellExecuteEx' verwendet wird. Aber das bedeutet, dass ein COM-Server-Prozess ausgeführt wird. Weil die UAC "Sicherheit" Prozessgranularität hat. –

Antwort

2

Alfs Kommentar sagt schon so viel aus: nein. Windows ist an Prozesse gebunden und ein Prozess kann nach der Erstellung nicht erhöht werden.

Natürlich können Sie einen zweiten Kindprozess haben, der nicht wirklich zeigt alles, aber führt nur die angeforderte Aufgabe.

Oder Sie können Ihr eigenes COM-Objekt definieren, um die angeforderte Aufgabe auszuführen, und dann das COM Elevation Moniker verwenden, um dieses COM-Objekt bei Bedarf in einem erhöhten Status zu erstellen.

Verwandte Themen