AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Applikation einem anderen Desktop zuweisen
Thema durchsuchen
Ansicht
Themen-Optionen

Applikation einem anderen Desktop zuweisen

Ein Thema von arb · begonnen am 30. Mär 2010 · letzter Beitrag vom 30. Mär 2010
Antwort Antwort
Benutzerbild von arb
arb

Registriert seit: 3. Okt 2006
3 Beiträge
 
#1

Applikation einem anderen Desktop zuweisen

  Alt 30. Mär 2010, 08:24
Hallo

Ich habe folgendes Problem:
Eine Applikation, die schon seit Jahren im Einsatz ist, soll mit durch einen geplanten Vorgang beim
Systemstart gestartet werden. Da ich zu diesem Zeitpunkt noch keinen Destkop habe ( mit Software evaluiert ),
wird diese App auch nicht sichtbar, sobald der Benutzer sich anmeldet.

Schrittweise:
1. Geplanter Vorgang mit App und Domainuser "ar" // Win2003 u. 2008 Server
2. App startet ohne, dass sich jemand anmeldet ( z.B.Server nach Reboot )
3. Anmeldung zu Supportzwecken mit "ar"
4. Die Applikation läuft wird aber nicht sichtbar für den Benutzer
5. Ich müsste die App abbrechen und wieder neu starten. Ist aber nicht das Ziel

Wenn ich den geplanten Vorgang als SYSTEM starte, sehe ich die App zwar, habe aber auf
verschiedene Bereiche der Domäne keinen Zugriff!

Versuche:
Ich habe als "ar" versucht, meine App der neuen WindowsStation und Desktop zuzuweisen. => kein Zugriff
Ich sehe zwar alle WindowStations kann aber nicht auf deren Desktop zugreifen.

Mit EnumWindowStation habe ich alle aufgelistet und dann mit OpenWindowStation versucht mich auf
deren Desktop einzuklinken ( SetThreadDestkop ).

Kann mir jemand weiterhelfen? Ich hätte folgende Idee:
1. Start der App mit User "ar" beim Systemstart
2. Start der ControlApp mit User "SYSTEM" beim Systemstart
3. Sobald sich jemand anmeldet und einen sichtbaren Desktop hat, soll meine
ControlApp die App diesem Desktop zuweisen. So in etwa müsste es ja auch ein
Virenscanner machen, oder bin ich da falsch informiert?
4. Von den Rechten her sollte "SYSTEM" das machen können.

Danke im voraus

Gruss Arthur
arb
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Applikation einem anderen Desktop zuweisen

  Alt 30. Mär 2010, 09:00
Ob deine Idee bei aktiver UAC funktionieren kann

Schreib die Anwendung um das du einen Workerprozess ohne GUI und eine Konfig/Viewer-App mit GUI hast. Die App mit GUI verbindet sich dann z.B. per Socketverbindung mit dem Workberprozess. Der Workerprozess läuft dann immer als Dienst. So machen es viele Anwendungen mit ähnlichen Anforderungen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von arb
arb

Registriert seit: 3. Okt 2006
3 Beiträge
 
#3

Re: Applikation einem anderen Desktop zuweisen

  Alt 30. Mär 2010, 09:25
Hallo

Danke für die rasche Antwort.

Eigentlich wollte ich genau das vermeiden.

Gibt es eine Chance für meinen Ansatz oder ist es grundsätzlich
mit den aktuellen Sicherheitsrichtlinien nicht möglich?

Danke im voraus.

Arthur
arb
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

Re: Applikation einem anderen Desktop zuweisen

  Alt 30. Mär 2010, 09:52
Zitat von arb:
Eigentlich wollte ich genau das vermeiden.
Aber so machen es die Virenscanner
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#5

Re: Applikation einem anderen Desktop zuweisen

  Alt 30. Mär 2010, 11:51
Sorry, aber da gibt es eine Menge anderer Gründe warum es nicht gehen wird und das alles, ohne dass UAC überhaupt dabei ist.

Hast du die MSDN von SetThreadDesktop mal gelesen?
Zitat:
The SetThreadDesktop function will fail if the calling thread has any windows or hooks on its current desktop (unless the hDesktop parameter is a handle to the current desktop).
Also wenn du VCL verwendest, dann wird es schwierig, denn dann muss du versuchen diese zu beenden und dann diese neuzustarten. VCL hat soviele Handles und Hooks. Und wenn da eine Komponente sich nicht sauber beendet, dann ist es vorbei.

Zitat:
Warning There is a significant security risk for any service that opens a window on the interactive desktop. By opening a desktop window, a service makes itself vulnerable to attack from the logged-on user, whose application could send malicious messages to the service's desktop window and affect its ability to function.
Auch wenn du als SYSTEM drin bist, dann ist deine Anwendung ein hohes Sicherheitsrisiko.

Wenn du die App als User "ar" gestartet hast und der Benutzer "z" loggt sich ein, dann gibt es zwei Probleme:
1. Vermutlich befindet sich Benutzer "ar" in einer anderen Terminalsitzung (0 in XP, 1 in >= Vista) und damit gibt es keine Chance zu wechseln. (Prüfe das mit Taskmgr oder ProcessExplorer. Stichwort: SessionID)
2. Benutzer ar hat kein Zugriff auf den Destkop von Benutzer z. D.h. ein SYSTEM Programm muss die DACL der Windowstation und Desktops von z ändern, damit das Programm dort überhaupt etwas anzeigen kann.


Es wäre besser die Anwendung neuzustarten oder den Teil, der Systemrechte benötigt in einen Dienst auszulagern und über Client-/Serverkommunikation den Status anzuzeigen.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von arb
arb

Registriert seit: 3. Okt 2006
3 Beiträge
 
#6

Re: Applikation einem anderen Desktop zuweisen

  Alt 30. Mär 2010, 13:58
Gut. Ich denke ich habe verstanden.

Danke für die Infos.

Gruss Arthur
arb
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz