www.mikrocontroller.net

Forum: PC-Programmierung läuft meine Anwendung als Shell


Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Das man seine eigene Anwendung als Shell unter Windows starten kann, ist 
ja ein alter Hut.
Ich suche eine Möglichkeit, herauszufinden, ob meine .NET Anwendung 
aktuell als shell ausgeführt wird.

Ziel iste es, wenn sie als Shell ausgeführt wird, beim Beenden der 
Anwendung den Rechner herunterzufahren.
Wurde Sie in der normalen Windowsumgebung gestartet, dann soll sie 
einfach beendet werden

Autor: Mars (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Keine Ahnung was du unter "als Shell ausführen verstehst", aber um 
rauszufinden ob deine Anwendung über die Konsole gestartet wurde kannst 
du die AttachConsole(>= WinXP) Funktion verwenden.

Autor: Reinhard S. (rezz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke er meint ob das Programm als Explorer-Ersatz gestartet wurde 
und so für Desktop/Startmenüs verantwortlich ist.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
man könnte über den Prozess den Parrent rausbekommen und wann das die 
cmd.exe dann weist du was lost ist.

Autor: Daniel V. (volte)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau, dies kannst du über die Prozesse erfahren.
.NET bietet die Process - Klasse, die unter anderem die Funktionen 
"GetProcessesByName" oder z.B. "GetProcessesByID" beeinhaltet. Mit ihrer 
Hilfe kannst du eigentlich alle Anwendungen starten, stoppen und 
überwachen.

Autor: zwieblum (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und einfach den passenden key aus der registry auslesen ?

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für eure Antworten.

als Shell meinte ich, das die Anwendung als Desktopersatz läuft.
habe folgende Lösung gefunden:
Die erste Instanz des Explorers ist der Desktop, alle weiteren die 
Dateiexplorer.

ich durchlaufe jetzt alle Prozesse, wenn es keinen Prozess Namens 
"erplorer" gibt, dann muss ja meine Anwendung die Shell sein.

mfg Thomas

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
erplorer ist auch schön!

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ab NT könnte es via Registry klappen
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo
Da drunter ein Ordner mit der Authentication ID als Name und darunter 
ein weiterer Ordner namens "StartupHasBeenRun". Der dürfte noch nicht 
existieren, wenn Dein Prog als Shell rennt.
Die Auth ID bekommt man mittels:
 GetCurrentProcess
 OpenProcessToken
 GetTokenInformation
und in der TOKEN_STATISTICS Struktur im Member AuthenticationId.

Ansonsten google mal nach "ExplorerIsShellMutex".

Eventuell auch hilfreich:
HKEY_CURRENT_USER\SessionInformation\ProgramCount

CU

PS: http://www.d-fens.net/kb/?id=100188

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.