AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi OpenDialog mit Benutzerumgebung aus System-Prozess
Thema durchsuchen
Ansicht
Themen-Optionen

OpenDialog mit Benutzerumgebung aus System-Prozess

Offene Frage von "Dezipaitor"
Ein Thema von CodeX · begonnen am 12. Feb 2011 · letzter Beitrag vom 13. Feb 2011
Antwort Antwort
Dezipaitor

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

AW: OpenDialog mit Benutzerumgebung aus System-Prozess

  Alt 12. Feb 2011, 22:58
Nur mal ins blaue geraten:
Es kann gut sein, dass TOpenDialog schon vor Impersonate die Vereichnisse und alles einstellt, also im Konstruktor. Dü müsstest also den OpenDialog im Code nach ImpersonateLU erstellen.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
475 Beiträge
 
Delphi 12 Athens
 
#2

AW: OpenDialog mit Benutzerumgebung aus System-Prozess

  Alt 13. Feb 2011, 13:18
Habe ich mal ausprobiert:
Delphi-Quellcode:
var
  isSystem : Boolean;
  UserToken : TJwSecurityToken;
  od : TOpenDialog;
begin
  isSystem := JwIsSystem;

  if isSystem then
  begin
    if is2000 then
      UserToken := TJwSecurityToken.CreateCompatibilityQueryUserToken(MAXIMUM_ALLOWED, 'explorer.exe')
    else
      UserToken := TJwSecurityToken.CreateWTSQueryUserTokenEx(nil, WtsGetActiveConsoleSessionID);
    TJwAutoPointer.Wrap(UserToken);
    UserToken.ImpersonateLoggedOnUser;
  end;

  od := TOpenDialog.Create(Form1);
  od.Execute;
  od.Free;

  if isSystem then
    UserToken.RevertToSelf;
end;
Leider mit dem gleichen Ergebnis. Generell funktioniert das Impersonate schon korrekt (GetUserName gibt zb vorher SYSTEM und danach den Benutzernamen aus. Aber irgendwie ist die Personifizierung nicht vollständig oder es fehlt ganz einfach der Environment-Block. Ich weiß nur leider nicht, wie man das da mit einbauen könnte. Die Verwendung eines Envirunment-Blocks kenne ich nur beim Starten eines neuen Prozesses.
Hättest Du noch eine andere Idee? Kannst das Code-Schnippsel auch gern selbst ausprobieren. Vielleicht wird die Ursache dann offensichtlicher.
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.
  Mit Zitat antworten Zitat
Dezipaitor

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

AW: OpenDialog mit Benutzerumgebung aus System-Prozess

  Alt 13. Feb 2011, 20:01
Der Umgebungsblock ist nur für den gesamten Prozess bestimmbar. Nachträglich ändern ist nicht offiziell möglich.

Der OpenDialog könnte mit SHGetFolderPath die Pfade auslesen, was bedeutet, dass Impersonate nicht funktioniert, weil man das Token direkt übergeben müsste. D.h. es wird ein neuer Prozess benötigt.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  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 18:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz