AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Prüfen ob Programm mit "runas" gestartet worden ist.
Thema durchsuchen
Ansicht
Themen-Optionen

Prüfen ob Programm mit "runas" gestartet worden ist.

Offene Frage von "jaenicke"
Ein Thema von freimatz · begonnen am 20. Nov 2020 · letzter Beitrag vom 20. Nov 2020
Antwort Antwort
Seite 1 von 2  1 2      
freimatz

Registriert seit: 20. Mai 2010
1.443 Beiträge
 
Delphi 11 Alexandria
 
#1

Prüfen ob Programm mit "runas" gestartet worden ist.

  Alt 20. Nov 2020, 08:56
Hallo,

hier habe ich gefragt wie man ein Programm als Administrator startet. Die Lösung war dann der Start mit dem Verb "runas".

Nun möchte ich in einem Programm umgekehrt feststellen ob es so gestartet wurde. Dazu habe ich schon einiges gegoogelt und auch einges gefunden (1, 2, 3, 4, 5).
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.
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#2

AW: Prüfen ob Programm mit "runas" gestartet worden ist.

  Alt 20. Nov 2020, 09:09
Zitat:
Die Lösung war dann der Start mit dem Verb "runas".
Gar nicht. Wie denn auch? runas ist ein Parameter wie willst du also feststellen ob dieser in einem anderen Programm Verwendung findet?
Du meinst sicherlich ob ein Programm mit Adminrechten gestartet wurde.
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.443 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Prüfen ob Programm mit "runas" gestartet worden ist.

  Alt 20. Nov 2020, 09:17
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.

Geändert von freimatz (20. Nov 2020 um 09:20 Uhr)
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#4

AW: Prüfen ob Programm mit "runas" gestartet worden ist.

  Alt 20. Nov 2020, 09:21
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:
const
  WM_MYRUNASCHECK = WM_User + 10;

SendMessage(Programm2.Handle, WM_MYRUNASCHECK, WPARAM(True), 0);
In WM_MYRUNASCHECK (wParam) kannst du dann prüfen ob WPARAM(True) oder WPARAM(False) geschickt wurde.

WM_MYRUNASCHECK muss dann aber in beiden Programmen definiert sein.
Das eine schickt den Status das andere wertet ihn über wParam aus.

Geändert von venice2 (20. Nov 2020 um 10:10 Uhr)
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.443 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Prüfen ob Programm mit "runas" gestartet worden ist.

  Alt 20. Nov 2020, 10:14
Ich habe wohl Schwierigkeiten mich verständlich auszudrücken.
... den status zurück ob es mit "runas" gestartet wurde oder nicht.
Das ist mein Problem. Die Programme können jeweils selbst in ein Log schreiben.

Ich hätte gerne
Delphi-Quellcode:
function IsStartedWithRunas():Boolean;
begin
  ...
end;
und diese soll False liefern wenn das Programm normal gestartet wurde und True wenn mit "runas".
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: Prüfen ob Programm mit "runas" gestartet worden ist.

  Alt 20. Nov 2020, 10:22
Ich habe wohl Schwierigkeiten mich verständlich auszudrücken.
Nein, du glaubst nur den Antworten nicht.

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!
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Prüfen ob Programm mit "runas" gestartet worden ist.

  Alt 20. Nov 2020, 10:26
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
Klaus
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#8

AW: Prüfen ob Programm mit "runas" gestartet worden ist.

  Alt 20. Nov 2020, 10:31
Ich habe wohl Schwierigkeiten mich verständlich auszudrücken.
... den status zurück ob es mit "runas" gestartet wurde oder nicht.
Das ist mein Problem. Die Programme können jeweils selbst in ein Log schreiben.

Ich hätte gerne
Delphi-Quellcode:
...
function IsStartedWithRunas():Boolean;
begin
  ...
end;
und diese soll False liefern wenn das Programm normal gestartet wurde und True wenn mit "runas".
Nochmal!
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;

Geändert von venice2 (20. Nov 2020 um 10:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.354 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Prüfen ob Programm mit "runas" gestartet worden ist.

  Alt 20. Nov 2020, 10:32
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.
Peter
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#10

AW: Prüfen ob Programm mit "runas" gestartet worden ist.

  Alt 20. Nov 2020, 10:35
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.
Danke
Sagte ich ihm schon.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 06:20 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