AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) fehlende Rechte nach EXE start auf WIN7

fehlende Rechte nach EXE start auf WIN7

Ein Thema von ZOD · begonnen am 21. Okt 2013 · letzter Beitrag vom 25. Okt 2013
Antwort Antwort
Seite 2 von 4     12 34   
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.288 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: fehlende Rechte nach EXE start auf WIN7

  Alt 22. Okt 2013, 17:42
Ich würde daher gerne die Programm-Exe aus der Startroutine mit dem parent
"explorer.exe" starten.
Der Parent hat damit nichts zu tun, der ist rein informativ (lässt sich z.B. per WMI abfragen, ist aber auch nicht immer korrekt, z.B. wenn die Prozess ID des Parents schon neu vergeben wurde). Der Benutzerkontext ist das Entscheidende.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
ZOD

Registriert seit: 6. Mai 2009
97 Beiträge
 
#12

AW: fehlende Rechte nach EXE start auf WIN7

  Alt 22. Okt 2013, 17:52
OK, aber der Benutzer ist laut procexp der gleiche.
Dann müsste es mehrere "Benutzerkontexte" pro Benutzer geben,
was ich dann nicht verstehe.

Eigentlich suche ich nun nach einer Möglichkeit, das Programm
aus der Startroutine heraus so zu starten, als ob es per
Doppelklick aus einem Explorerfenster heraus gestartet würde.
Denn dann geht ja alles.

Ist es in diesem Fall besser mit ShellExecut bzw. ShellExecutEx zu arbeiten?
Oder handle ich mir da neue Probleme ein?
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.679 Beiträge
 
Delphi 5 Professional
 
#13

AW: fehlende Rechte nach EXE start auf WIN7

  Alt 22. Okt 2013, 18:25
OK, ich versuch's nochmal anders zu erklären: Jeder Benutzer hat eigene Netzlaufwerke, aber auch ein Elevated-Prozess im Falle der UAC hat eigene. Die Netzlaufwerke hängen von einem (Security) Token ab - Elevated-Prozesse haben ein anderes Token als Non-Elevated - völlig unabhängig davon, ob der Benutzer(name) derselbe ist. Das sind dann "mehrere Benutzerkontexte pro Benutzer", wenn du so willst.

MfG Dalai
  Mit Zitat antworten Zitat
musicman56
(Gast)

n/a Beiträge
 
#14

AW: fehlende Rechte nach EXE start auf WIN7

  Alt 22. Okt 2013, 18:58
Hallo,

aus genau diesem Grund würde ich es mit ShellExecute und dem Verb "runas" probieren. Wenn die Startroutine des Setup dann als Administrator gestartet würde, müssten doch alle von dieser Routine gestarteten Prozesse ebenfalls unter dem Admin-Konto laufen.
  Mit Zitat antworten Zitat
ZOD

Registriert seit: 6. Mai 2009
97 Beiträge
 
#15

AW: fehlende Rechte nach EXE start auf WIN7

  Alt 22. Okt 2013, 19:39
Guten Abend zusammen,

das probiere ich morgen aus und melde dann, wie es geklappt hat.

Danke für heute!
  Mit Zitat antworten Zitat
ZOD

Registriert seit: 6. Mai 2009
97 Beiträge
 
#16

AW: fehlende Rechte nach EXE start auf WIN7

  Alt 23. Okt 2013, 15:44
Ich habe den Programmaufruf aus der Startroutine nun
mit

Delphi-Quellcode:
     ShellExecute(
        0,
        PChar('open'),
        PChar(ProgDateiPfad),
        PChar(ProgParameter),
        PChar(ArbeitsVerzeichnis),
        SW_SHOW
        );
gemacht - das Problem bleibt bestehen. Im procexp bekomme ich
(wie bei CreateProcess auch) den richtigen Benutzer angezeigt.

Wenn ich aus dem gestarteten Programm heraus einen Explorer starte mit

ShellExecute(Application.Handle, 'explore', PChar(Directoryname), nil, nil, SW_SHOWNORMAL);

dann sind die Netzverbindungen zwar da, jedoch die Verzeichnisse mit dem Attribut
"versteckt" werden nicht angezeigt.

Hängt das auch mit dem "(Security) Token" zusammen? Die Einstellung zur
Anzeige von versteckten Dateien wird doch normalerweise im Explorer unter

"Extras|Ordneroptionen|Ansicht|Versteckte Dateien und Ordner"

eingestelt bzw. im entspr. Registry-Schlüssel gespeichert.

Was mache ich hier falsch?
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#17

AW: fehlende Rechte nach EXE start auf WIN7

  Alt 23. Okt 2013, 15:57
...dann sind die Netzverbindungen zwar da, jedoch die Verzeichnisse mit dem Attribut
"versteckt" werden nicht angezeigt...
Aber Moment: Es ist doch unerheblich ob Dateien und Verzeichnis per Attribut versteckt sind.
Ob man sie öffnen kann oder nicht, hängt nur davon ab:
  1. Ist der Pfad und Dateiname korrekt
  2. Habe ich / der Prozess das Recht die Datei / den Pfad zu öffnen / zu lesen
Ich glaube es wäre an der Zeit zu zeigen:
  • wie du die Datei öffnest
  • woher die Informationen zum Dateinamen inkl. Pfad kommen
  • welche Rechte auf der eigentlichen Zieldatei eingetragen sind

Gruß, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.288 Beiträge
 
Delphi 11 Alexandria
 
#18

AW: fehlende Rechte nach EXE start auf WIN7

  Alt 23. Okt 2013, 16:25
Im procexp bekomme ich
(wie bei CreateProcess auch) den richtigen Benutzer angezeigt.
Wie schon geschrieben, es gibt für jeden Benutzer zwei Token, eines mit und eines ohne Adminrechte. Das siehst du am Benutzernamen nicht.

Das siehst du z.B. im Taskmanager in der Spalte Heraufgestuft, ich glaube die gab es auch bei Windows 7 schon.

Du musst den neuen Prozess mit dem normalen Benutzertoken starten wie ich schon geschrieben habe um dessen Rechte zu haben.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
ZOD

Registriert seit: 6. Mai 2009
97 Beiträge
 
#19

AW: fehlende Rechte nach EXE start auf WIN7

  Alt 23. Okt 2013, 16:32
@Chris
Kurzantwort
Der Zugriff auf die Dateien erfolgt mit ShellExecute, die Pfadnamen sind
in einer DB gespeichert mit "hart" vorgegebenen LW-Buchstaben.

Langantwort:
Öffne ich aus dem Programm heraus das Verzeichnis einer der ""Problem-Dateien" mit


ShellExecute(Application.Handle, 'explore', PChar(Directoryname), nil, nil, SW_SHOWNORMAL);

so bekomme ich als Rückgabewert
"5" - also
"Fehler beim gemeinsamen Zugriff auf eine Datei im Netz oder Fehler beim Zugriff auf eine gesperrte Datei im Netz."

Wenn ich dann aus genau dem jetzt laufenden Programm heraus einen Explorer für das EXE-Verzeichnis starte mit

ShowDirectory(ExtractFilePath(Application.ExeName))

Dann kann ich mich darin bis zum ursprünglichen Verzeicnis durchklickern
und bekomme hier auch alle Dateien angezeigt und kann diese per Doppelkklick öffnen.

Die Pfade sind wie geschildert "hart" in einer DB gespeichert, incl. Laufwerksbuchstaben.
(Wir verwenden für einige Server Volumes fest vergebene LW-Buchstaben).

Die Rechte auf die Zieldatei sind da - sonst könnte ich sie ja nicht wie
oben geschildert im aus dem Programm heraus gestarteten Explorer anzeigen.

Für die Anzeige wird ein normales ShellExecute verwendet, zuerst wird
das Programm für die Anzeige über die FileExtension ermittelt und dieses
dann ebenfalls per ShellExecute aufgerufen. Klappt hervorragend bei OS <= XP.

Ich verstehe einfach nicht, warum der Benutzer einmal die Rechte hat und
ein andermal die Rechte nicht hat.
  Mit Zitat antworten Zitat
ZOD

Registriert seit: 6. Mai 2009
97 Beiträge
 
#20

AW: fehlende Rechte nach EXE start auf WIN7

  Alt 23. Okt 2013, 16:39
@jaenicke

Wie schon geschrieben, es gibt für jeden Benutzer zwei Token, eines mit und eines ohne Adminrechte. Das siehst du am Benutzernamen nicht.

Das siehst du z.B. im Taskmanager in der Spalte Heraufgestuft, ich glaube die gab es auch bei Windows 7 schon.

Du musst den neuen Prozess mit dem normalen Benutzertoken starten wie ich schon geschrieben habe um dessen Rechte zu haben.

wie mache ich das?
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:48 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