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 2 von 2     12   
Benutzerbild von Jasocul
Jasocul

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

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

  Alt 20. Nov 2020, 10:39
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.
Ich finde das nicht. In deinen Beispielen schickst du Messages. Bei meinem Vorschlag wird beim Aufruf schon ein Parameter übergeben, der im Programm geprüft werden kann.
Falls du das doch irgendwo so vorgeschlagen hast, dann Asche auf mein Haupt und ich gehe meine Brille putzen.
Peter
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#12

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

  Alt 20. Nov 2020, 10:45
Zitat:
Bei meinem Vorschlag wird beim Aufruf schon ein Parameter übergeben
Da muss ich mich jetzt nicht drum streiten habe ihm eine Lösung aufgezeigt was oder wie er es nun umsetzt kann mir egal sein.
Asche auf mein Haupt
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#13

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

  Alt 20. Nov 2020, 12:08
Man kann sich auch bei den tausenden "IsAdmin"-Funktionen was raussuchen, die man überall findet.

Aber wichtig: Nicht auf den Namen/Konto "Administrator" prüfen, sondern auf die Rechte.

"Ist Administrator" kann ja Vieles bedeuten:
* Benutzer ist der, mit dem Namen "Administrator", bzw. er hat die SID des StandardAdmins vom Windows.
* Benutzer ist in der Gruppe der Administratoren
* Benutzer hat eines der Rechte, welches Administratoren so im Allgemeinen haben

Bzw. du kannst/solltest auch gezielt die Berechtigung/Funktion prüfen, für Welche du unbedingt "Admin" brauchst.
Nicht jeder "Admin" darf alles. Wir haben hier z.B. einen ServiceAdmin, der darf nur Dienste starten und beenden. Und wenn man einen Dienst beenden will, dann reicht es auch zu, wenn man "nur" genau dieses Recht besitzt.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (20. Nov 2020 um 12:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

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

  Alt 20. Nov 2020, 12:09
Trotzdem ist wichtig auch zu beachten, was ich oben zur Lösung mit einem Parameter geschrieben habe:
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!
Das gilt natürlich für die anderen genannten Lösungen genauso (nur dass Messages oder temporäre Dateien unnötiger Mehraufwand sind, weil sie keinen Vorteil gegenüber einem Parameter haben).
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#15

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

  Alt 20. Nov 2020, 12:16
Zitat:
Du kannst natürlich einen speziellen Parameter übergeben
Wann?
Mit shellexecute?

Zeig ihm doch ein Beispiel.

Und ich behaupte! Ob ich nun einen Parameter oder einen Message schicke ist gehüpft wie gesprungen.
Es muss nur in der 2 Anwendung ankommen.

Zitat:
weil sie keinen Vorteil gegenüber einem Parameter haben
Und ein Parameter keinen vorteil gegenüber SendMessage
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#16

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

  Alt 20. Nov 2020, 12:22
Trotzdem ist wichtig auch zu beachten, was ich oben zur Lösung mit einem Parameter geschrieben habe:
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!
Das gilt natürlich für die anderen genannten Lösungen genauso (nur dass Messages oder temporäre Dateien unnötiger Mehraufwand sind, weil sie keinen Vorteil gegenüber einem Parameter haben).
Die Methode hat aber den Charme, dass man über den Parameter gesagt bekommt: Ich habe Dich mit RunAs aufgerüfen, Du müsstest jetzt Adminrechte haben.
Und das aufgerufene Programm kann dann prüfen, ob es mit RunAs aufgerufen wurde und die entsprechenden Rechte hat.
Delphi-Quellcode:
function IsStartedWithRunas():Boolean;
begin
  Result := ParamStr(1) = 'runas';
end;
Liefert diese Funktion true und man hat trotzdem keine Adminrechte, scheint was mit dem Aufruf nicht zu funktionieren. Für eine Protokollierung sollte das ausreichen und darum scheint es hier ja zu gehen.

'nen Parameter bekommt man auf der Kommandozeile mit und hat ihn garantiert in ParamStr. Bei 'ner Message kann man sich dusselg anstellen und sie nicht mitbekommen
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

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

  Alt 20. Nov 2020, 13:31
Zitat:
weil sie keinen Vorteil gegenüber einem Parameter haben
Und ein Parameter keinen vorteil gegenüber SendMessage
Haben Parameter z.B. auch bei einer Kommandozeilenanwendung keinen Vorteil?

Um eine Nachricht zu senden musst du ein passendes Handle ermitteln und diese Nachricht dort dann auch empfangen und verarbeiten. Und die Nachricht darf nicht geschickt werden bevor das zweite Programm sie empfangen kann usw.
Einen Parameter kannst du mit einer Zeile abfragen und kannst ihn einfach mitgeben, das sind nur eine geänderte und eine neue Zeile Code und es funktioniert unabhängig von den sonstigen Gegebenheiten...
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 17:51 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