![]() |
Prüfen ob Programm mit "runas" gestartet worden ist.
Hallo,
![]() Nun möchte ich in einem Programm umgekehrt feststellen ob es so gestartet wurde. Dazu habe ich schon einiges gegoogelt und auch einges gefunden ( ![]() ![]() ![]() ![]() ![]() Gerade im letzteren hat himitsu darauf hingewiesen, dass man in der Regel eher wissen will ob man Rechte hat die man haben will. In meinem Fall habe ich den Eindruck, dass es nicht das ist was ich will. Ich möchte "nur" feststellen ob das Programm mit "runas" gestartet wurde. Das soll nur für ein Logging sein um festzustellen ob der von mir geplante Ablauf so klappt. (Was er nach einem ersten Test bei mir tut, jedoch bei einem Tester nicht.) Ich könnte nun schon einige Lösungen ausprobieren und schauen ob die das tun was ich will. Allerdings bin ich mir dann nicht sicher ob das auch zuverlässig ist. Vielleicht hat hier schon eine definitive Meinung dazu. |
AW: Prüfen ob Programm mit "runas" gestartet worden ist.
Zitat:
Du meinst sicherlich ob ein Programm mit Adminrechten gestartet wurde. |
AW: Prüfen ob Programm mit "runas" gestartet worden ist.
Ich habe Programm A, das ist von mir geschrieben.
Das soll Programm B, auch von mir geschrieben, mit "runas" aufrufen. In beide Programm möchte ich ein Logging einbauen, wo ich später nachschauen kann ob das auch so war. Ich gehe schon davon aus, dass eine Prüfung explizit auf "runas" nicht möglich ist. Aber auf das was bei "runas" passiert schon. Wenn das mit einer Prüfung "ob ein Programm mit Adminrechten gestartet wurde" geht soll das mir recht sein. |
AW: Prüfen ob Programm mit "runas" gestartet worden ist.
Du könntest eine SendMessage an das zweite Programm schicken.
Dieses liefert dir dann den status zurück ob es mit "runas" gestartet wurde oder nicht. Das geht dann aber nur zwischen diesen beiden Programmen.
Delphi-Quellcode:
In WM_MYRUNASCHECK (wParam) kannst du dann prüfen ob WPARAM(True) oder WPARAM(False) geschickt wurde.
const
WM_MYRUNASCHECK = WM_User + 10; SendMessage(Programm2.Handle, WM_MYRUNASCHECK, WPARAM(True), 0); WM_MYRUNASCHECK muss dann aber in beiden Programmen definiert sein. Das eine schickt den Status das andere wertet ihn über wParam aus. |
AW: Prüfen ob Programm mit "runas" gestartet worden ist.
Ich habe wohl Schwierigkeiten mich verständlich auszudrücken. :(
Zitat:
Ich hätte gerne
Delphi-Quellcode:
und diese soll False liefern wenn das Programm normal gestartet wurde und True wenn mit "runas".
function IsStartedWithRunas():Boolean;
begin ... end; |
AW: Prüfen ob Programm mit "runas" gestartet worden ist.
Zitat:
Es ist aber so: Diese Information gibt es nicht. Es gibt nur die Information, ob das Programm bestimmte Rechte und Parameter besitzt. Wie die Funktion zum Starten aufgerufen wurde, wird nirgends gespeichert. Du kannst natürlich einen speziellen Parameter übergeben und auf den prüfen (ParamStr). Aber das heißt noch lange nicht, dass die Rechte, die du brauchst, vorhanden sind. Auch runas ist dafür keine Garantie! |
AW: Prüfen ob Programm mit "runas" gestartet worden ist.
Prgramm A legt wenn es Programm B mit runas startet im temp Verzeichnis eine Datei an.
Porgamm B schaut nach ob die Datei vorhanden ist - ist sie da a) wird die Datei gelöscht und b) weiß Programm B das es mit runas gestartet wurde. Grüße Klaus |
AW: Prüfen ob Programm mit "runas" gestartet worden ist.
Zitat:
Das geht nur wenn du den Status aus Anwendung A selbst nach Anwendung B schickst auf welche art auch immer. Beispiel habe ich genannt. Verwende die WinProc und oder einen MessageHandler um die Message in Anwendung B zu empfangen. Und schicke sie aus Anwendung A abhängig davon ob runAs verwendet wird oder nicht.
Delphi-Quellcode:
type
TForm1 = class(TForm) private ... protected procedure ProcMessage(var Msg: TMessage); public ... end; const WM_MYRUNASCHECK = WM_User + 10; //create.. FMessageHandle := Classes.AllocateHWnd(ProcMessage) //destroy.. if FMessageHandle <> 0 then Classes.DeallocateHWnd(FMessageHandle); procedure TForm1.ProcMessage(var Msg: TMessage); begin if Msg.Msg = WM_MYRUNASCHECK then begin // schreibe dein Log (Msg.WParam = True oder False) end else Msg.result := DefWindowProc(FMessageHandle, Msg.Msg, Msg.wParam, Msg.LParam); end; |
AW: Prüfen ob Programm mit "runas" gestartet worden ist.
Beide Programme sind von dir, also kannst du die selbst anpassen.
Übergib beim runas doch einfach einen Parameter an das aufzurufende Programm. Diesen Parameter kannst du prüfen und weißt dann, ob es mit runas gestartet wurde. |
AW: Prüfen ob Programm mit "runas" gestartet worden ist.
Zitat:
Sagte ich ihm schon. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:03 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