Laden...

Ausführungsmöglichkeiten einer EXE programmatisch erkennen

Erstellt von PeterOlsen vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.822 Views
P
PeterOlsen Themenstarter:in
3 Beiträge seit 2009
vor 9 Jahren
Ausführungsmöglichkeiten einer EXE programmatisch erkennen

Gibt es eine Möglichkeit, dass eine EXE programmatisch feststellen kann, ob sie

  • mit Doppelklick auf die EXE
  • über Konsole
  • Start über Visual Sudio

ausgeführt wurde? D.h. gibt eine Methode Application... oder Environment..., die entsprechend den 3 Startmöglichkeiten unterschiedliche Werte zurück gibt?

W
872 Beiträge seit 2005
vor 9 Jahren

Direkt gibt es da nichts.
Du kannst bei Environment.CurrentDirectory und Environment.CommandLine mal schauen, ob Du damit darauf schliessen kannst...

L
416 Beiträge seit 2008
vor 9 Jahren

Für das dritte hilft evtl. Debugger.IsAttached

16.842 Beiträge seit 2008
vor 9 Jahren

Ob Doppelklick oder Klick und Enter oder Konsole macht für die Anwendung absolut keinen Unterschied.
Wie man an die Debugger-Info kommt hat ja schon Lennart gesagt.

Einzig kann man Testen, ob der Code in einer Windows Anwendung läuft oder in einer Konsole.
Console.Title ist String.Empty, wenn er in einer Windows-Anwendung läuft. Es trägt aber den Konsolen-Titel, wenn es in einer Konsole ausgeführt wird.
Ebenso könnte man erfahren, ob es in einem Service läuft oder in einer GUI. Aber wie die Anwendung gestartet wird geht mit Bordmitteln nicht.

T
2.224 Beiträge seit 2008
vor 9 Jahren

Die wichtigere Frage für mich wäre wozu man dies eigentlich wissen will?
Eigentlich sollte der Anwendung egal sein wie diese gestartet wird.
Oder machst du irgendwelche skurillen Sachen wenn die Anwendung auf eine der Arten gestartet wird?
Wirklich sinnvolle Zwecke wüsste ich nicht.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

U
1.688 Beiträge seit 2007
vor 9 Jahren

Hallo,

man könnte per Windows-API oder WMI den erstellenden Prozess (explorer, cmd, devenv) feststellen. Suche bspw. nach "C# parent process name". Das fertige Snippet kannst Du ja dann hier posten.

P
PeterOlsen Themenstarter:in
3 Beiträge seit 2009
vor 9 Jahren

Vielen Dank für die vielen Posts. Die Unterscheidungsmöglichkeit ist aus einer Kombination aus Debugger.IsAttached und Environment.CommandLine möglich 😃

Herzlichen Dank