Gibt es eine Möglichkeit, dass eine EXE programmatisch feststellen kann, ob sie
ausgeführt wurde? D.h. gibt eine Methode Application... oder Environment..., die entsprechend den 3 Startmöglichkeiten unterschiedliche Werte zurück gibt?
Direkt gibt es da nichts.
Du kannst bei Environment.CurrentDirectory und Environment.CommandLine mal schauen, ob Du damit darauf schliessen kannst...
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.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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.
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.
Vielen Dank für die vielen Posts. Die Unterscheidungsmöglichkeit ist aus einer Kombination aus Debugger.IsAttached und Environment.CommandLine möglich 😃
Herzlichen Dank