AccessDenied setWindowLongPtr



  • Hello together,

    i want to pull a window into another window.

    Therefore i have to remove the WS_POPUP flag in GWL_STYLE, descripted in the documentation of the setParent function.

    this works fine, when im logged in with an Administrator account, and the two processes runs with this account.

    But in my case, I'm logged in with a normal User(WindowGroup "Users"), and the two processes are running under an administrator account.

    Then i get the with GetLastError the value 5 (Access Denied)

    And when i print the GWL_STYLE of the child window, it has not change. The same result, when i look with the spy tool on it.

    I don' t understand which effect the restricted user has on this behaviour. That in my opinion the proccesses runs with Administrator rights. When i look with the process Explorer on the processes, they have the Integrity Level High.

    Thanks for your hopefully helpful answers.



  • Hallo nochmal,

    Entschuldigung für den Englischen Beitrag. Bin wohl ein wenig verwirrt.

    Hier noch in deutsch:

    Ich möchte ein Fenster in ein anderes Fenster ziehen.

    Wie in der Dokumentation der setParent Funktion beschrieben, möchte ich das WS_POPUP flag aus dem GWL_STYLE entfernen.

    das funktioniert auch soweit, wenn ich als Admin eingeloggt bin und meine Prozesse als Admin laufen.

    Aber in meinem Fall, bin ich als normaler Windows User eingeloggt(WindowsGruppe USERS). Die beiden beteiligten Prozess laufen unter einen Administrator account.

    Dann bekommen ich von der Funktion GetLastError den Wert 5 (Access Denied) zurück.

    Wenn ich danachen den GWL_STYLE ausgeben oder mit dem Spy tool drauf schauen ist dort keine Änderung (was zu erwarten war).

    Ich verstehe nicht, welchen Einfluß der User mit den geringen Rechten auf den Vorgang hat, da meine processe als Administrator laufen. Wenn ich mit dem Process Explorer drauf schauen haben beide Prozesse den Integrity Level High.

    sorry nochmals.



  • Hallo nochmal,

    ich habe nochmals getestet, habe festgestellt, das es irrelevant ist, ob der eingeloggte user admin ist oder nicht, es reicht wenn die prozesse unter einem anderen user laufen.


  • Mod

    Genau. Und dieses werden gegeneinander isoliert...



  • Hallo Martin,

    Danke für deine Antwort, was ich nur noch nicht ganz verstehe, ist da meine Prozesse unter dem gleichen user account laufen. Nur der eingeloggte user ein anderer ist. Liegt es daran, das der user unter dem die Prozesse laufen keine Berechtigung auf dem Desktop des eingeloggten users haben?

    Gibt es da keine möglichkeit, da die Prozesse unter einem admin account laufen, diesem admin user rechte auf dem Desktop des anderen Users zu geben, Bsp. irgendwelche privilegien??


  • Mod

    Nein die Prozesse laufen eben nicht unter dem gleichen Account.
    Du sagst doch selber, das der angemeldete Benutzer ein anderer ist.
    Die Prozesse sind komplett gegen einander isoliert.

    Das die Prozesse sich den selben Desktop teilen spielt hier gar keine Rolle.



  • Hallo Martin,

    also wenn ich den Process Explorer öffne, laufen meine 2 prozesse unter dem gleichen User.

    Vielleicht ein wenig zum hintergrund.

    Wir haben eine Application, die unsere prozesse startet, diese startet sie unter einem bestimmten User, hier gibt es z. B. Prozesse die Geräte in unser System integriert. Oft bringen die Geräte nun ihre eigene Software mit, um Einstellungen vorzunehmen, die wir nicht in unserer Oberfläche abbilden. Deshalb brauchen wir die möglichkeit diese Anwendungen in unser System zu integrieren. Wir haben nun einen Prozess(WindowManager), der die externen Anwendungen in den Vordergrund bringt. Hierfür erstellt sich dieser Prozess ein Fenster, zieht die externe Anwendung in das Fenster und bringt dieses Fenster in den Vordergrund(ob das Clever ist weis ich nicht, möchte ich momentan aber auch nicht ändern, vermutlich größerer Umbau).

    Wenn ich dieses im Process Explorer anschaue, sieht das folgendermaßen aus:

    login: user1 (Desktop User)
    externe Anwendung: Username: User2, Integrity Level: High
    WindowManager: Username: User2, Integrity Level: High

    User1 hat normalerweise nur User rechte (kein Admin)
    User2 hat admin Rechte (siehe Integrity Level)

    Mein verdacht ist (ohne dies belegen zu können) dass das WindwoHandle der externen Anwendung auf dem Desktop des eingeloggten Users hängt (oder der Session...), der WindowManager aber keinen Zugriff auf den Desktop bekommt, zumindestens nicht auf sicherheits relevanten Funktionen.

    Es müsste doch aber möglich sein im diese Rechte zu geben.

    Oder bin ich da komplett auf dem Holzweg?


Log in to reply