![]() |
AW: Prüfen ob Programm mit "runas" gestartet worden ist.
Zitat:
Falls du das doch irgendwo so vorgeschlagen hast, dann Asche auf mein Haupt und ich gehe meine Brille putzen. 8-) |
AW: Prüfen ob Programm mit "runas" gestartet worden ist.
Zitat:
Asche auf mein Haupt ;) |
AW: Prüfen ob Programm mit "runas" gestartet worden ist.
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. |
AW: Prüfen ob Programm mit "runas" gestartet worden ist.
Trotzdem ist wichtig auch zu beachten, was ich oben zur Lösung mit einem Parameter geschrieben habe:
Zitat:
|
AW: Prüfen ob Programm mit "runas" gestartet worden ist.
Zitat:
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:
|
AW: Prüfen ob Programm mit "runas" gestartet worden ist.
Zitat:
Und das aufgerufene Programm kann dann prüfen, ob es mit RunAs aufgerufen wurde und die entsprechenden Rechte hat.
Delphi-Quellcode:
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.
function IsStartedWithRunas():Boolean;
begin Result := ParamStr(1) = 'runas'; end; '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 ;-) |
AW: Prüfen ob Programm mit "runas" gestartet worden ist.
Zitat:
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... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:04 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