Wie man Aktuell angemeldeten Benutzer die session-ID?

Bin ich mit einem Prozess aus einem windows-Dienst mithilfe

ProcessStartInfo processStartInfo = new ....
Process.Start(processStartInfo);

Das problem ist, wenn ich Dienst unter dem Konto lokales system, es läuft gut, aber es nicht zeigen die Programme " - Fenster.
Ich habe versucht, Benutzerdaten im service-Eigenschaften, aber dann "Allow service to interact with desktop' - checkbox wird deaktiviert.

Ich wirklich brauchen, um ausführen die app ruft es aus dem Dienst, und ich wirklich brauchen, um zu sehen, das app Fenster.

Mir bitte helfen.

UPD. Gut, Sie überladene version der Prozess.Starten Sie was braucht, Benutzername, Kennwort und Domäne - it wird ziehen Sie das Programm auf dem desktop. Aber jetzt startet die app unter einem Anmeldeinformationen, zeigt aber, dass auf einem anderen desktop des Benutzers. Wie kommt das?

UPD2: ich habe eine Idee! Die ich verwenden kann psexec.exe aus der Sysinternals-Suite. Aber das problem ist, ich brauche zu starten, die Sache stillschweigend "als administrator". Und ich weiß nicht, wie.
Ich meine, auch wenn du schon admin-Rechte, manchmal muss man manuell sagen "als administrator ausführen", bestätigen die Benutzerkontensteuerung und nur nach, dass Sie bereit sind zu gehen. Ich weiß nicht, wie leise etwas laufen bringen, ohne UAC-Sache....

UPD3: sehr Geehrter Herr. Ich habe das Ding! Endlich.

Ok. Am Anfang war das problem ja auch in der Sitzung 0-Isolierung Sache. Also ich brauchte zu build ein Mitte-app, die gestartet werden können, ist aus dem Dienst und dann, dass die app wiederum angenommen, zum start meiner Anwendung durch RPC und bringen es zu einem desktop. Anstelle von building middle layer-app, die ich beschlossen, zu verwenden psexec-tool (wie auch immer es funktioniert genau so, wie ich brauche - über RPC).
Und als ich versuchte zu verwenden, das Werkzeug, die unter dem LOKALEN SYSTEM-Konto hat es nicht funktioniert aus irgendeinem Grund. Und dann merkte ich - der Grund ist verdammt EULA popup-dialog, der die Mitgliedstaaten in jedem einzelnen pstool, und es war unmöglich, klicken Sie auf die Schaltfläche, um zu bestätigen-dialog unter dem lokalen system-Konto.
Also die Lösung ist das erstellen eines Schlüssels in der registry HKU.DEFAULT\Software\Sysinternals\PsExec " mit DWORD-Wert EulaAccepted = 1

Hurra, jetzt funktioniert es!
ABER! Jetzt muss ich bringen das Programm auf die derzeit angemeldete Benutzer-Bildschirm. Zu tun, dass ich bin gonna brauchen Sie die session-id!

Die Frage ist also: Wie bekommt man aktuell angemeldeten Benutzer die session-id? Und was passiert, wenn dort niemand angemeldet noch? Was die session-id, die wäre?

UPD4: Das ist es! Ich bekam das!

[DllImport("Kernel32.dll", EntryPoint = "Sie Wtsgetactiveconsolesessionid")]
public static extern int Sie wtsgetactiveconsolesessionid();

Danke Jungs!

Ich Las meine Antwort und erkannte, dass ich nur gab Sie die Hälfte der Lösung... Man sollte sich Stück zusammen Ihre endgültige Lösung und fügen Sie es als eine Antwort, anstatt die Frage. Es ist okay, zu veröffentlichen Antworten auf Ihre eigenen Fragen hier 🙂 Macht es klarer für jemand, der dieses liest, in die Zukunft (was jemand will - das ist ein Recht häufiges problem).

InformationsquelleAutor iLemming | 2010-07-07

Schreibe einen Kommentar