Windows 10 2.273 Themen, 29.278 Beiträge

Desktop schwarz wenn als Admin der Explorer beendet wird

Sovebämse / 19 Antworten / Baumansicht Nickles

Hallo

Ich habe ein Programm programmiert, welches unter anderem den Explorer beendet und neu startet, damit es einen Refresh gibt. Dies mit folgendem Befehl:

taskkill /F /IM explorer.exe & start c:\windows\explorer.exe"

Damit erhalte ich das Resultat, dass bei Ausführen des Programms als Administrator, der Desktop schwarz wird und auch schwarz bleibt. Ich muss erst in den Task Manager und den Explorer händisch starten. Normal ausgeführt, funktioniert alles einwandfrei. Das Eigenartige ist jedoch, dass dieses Problem nur bei meinem Geschäfts-Computer auftritt, nicht aber bei meinem privaten Gerät. Der Unterschied ist, dass ich kein Adminpasswort habe bzw. selber Admin bin. Beim Geschäftsrechner mussich beim Ausführen des Programms als Administrators den Benutzer (das ist ein Admin-Domänenbenutzer) und das Passwort (das ich kenne) eingeben. Hat es ev. irgendwie damit zu tun, dass er die explorer.exe nicht mehr findet?

Gruss und Dank
Thomas

bei Antwort benachrichtigen
hddiesel Sovebämse „Desktop schwarz wenn als Admin der Explorer beendet wird“
Optionen

Hallo Thomas,

Inhalt der BAT:

@echo off
taskkill /f /IM explorer.exe
REM Hier dein weiterer Code
Start explorer.exe

Den dunklen Bildschirm kannst du unterdrücken, wenn du die Batch per Verknüpfung startest und in den Eigenschaften unter "Ausführen: Minimiert" statt Normal wählst.

Windows 10 Pro 64-Bit, 22H2: MS Office Pro Plus 2016 32-Bit: Mein Motto: Leben und leben lassen: Gruss Karl
bei Antwort benachrichtigen
Sovebämse hddiesel „Hallo Thomas, Inhalt der BAT: @echo off taskkill /f /IM explorer.exe REM Hier dein weiterer Code Start explorer.exe Den ...“
Optionen

Hallo

Leider klappt das nicht. Wenn ich das "C:\windows\" beim Start weglasse, kommt der schwarze Bildschirm auch dann, wenn ich die Batch nicht als Administrator ausführe. Sobald ich den Pfad wieder hinschreibe, geht es wieder.

Mit schwarzem Bildschirm meine ich auch nicht ein DOS-Fenster, sondern der komplette Bildschirm wird schwarz und der Explorer wird nicht mehr gestartet. D.h. die Zeile "Start explorer.exe" scheint keinen Effekt zu haben, wenn ich die Batch mit einem Administrator-Konto ausführe. Das Administratorkonto ist ein Domänenkonto, also kein lokales.

bei Antwort benachrichtigen
hddiesel Sovebämse „Hallo Leider klappt das nicht. Wenn ich das C: windows beim Start weglasse, kommt der schwarze Bildschirm auch dann, wenn ...“
Optionen

HalloThomas,

in der Sache kein dunkler Bildschirm, hast du folgendes beachtet?

"Den dunklen Bildschirm kannst du unterdrücken, wenn du die "Beispiel.bat", per Verknüpfung startest und in den Eigenschaften der Verknüpfung "Ausführen: Minimiert" statt Normal wählst."

Was steht in deiner z.B. "Beispiel.bat"?

Windows 10 Pro 64-Bit, 22H2: MS Office Pro Plus 2016 32-Bit: Mein Motto: Leben und leben lassen: Gruss Karl
bei Antwort benachrichtigen
Sovebämse hddiesel „HalloThomas, in der Sache kein dunkler Bildschirm, hast du folgendes beachtet? Den dunklen Bildschirm kannst du ...“
Optionen

Ja, ich habe eine Verknüpfung gemacht und dort "Ausführen: Minimiert" gewählt. In meiner Bat-Datei steht sonst (noch nichts) drin. Habe nur das Minimalbeispiel von dir ohne Code zwischen Taskkill und Start geschrieben. Später soll dort ein Registry-Key gelöscht werden. Und mit Programmieren hatte ich "richtig" Programmieren gemeint, sprich: Ich führe die Befehle aus einem C++-Programm aus, nicht aus einer Batch-Datei. Aber wie ich jetzt hier sehe, macht das auch keinen Unterschied.

Der dunkle Bildschirm ist ja nicht so, dass der kommt und geht. Er bleibt und der Desktop erscheint nicht mehr. Ich muss den Task Manager öffnen und dort den Explorer wieder starten, da anscheinend der Eintrag in der Batch diesen nicht wieder starten konnte, daher bleibt auch der Monitor schwarz. Mit der Ausführung der Batch hat das meiner Meinung nach nichts zu tun, aber ich kann mich auch irren.

bei Antwort benachrichtigen
Sovebämse hddiesel „HalloThomas, in der Sache kein dunkler Bildschirm, hast du folgendes beachtet? Den dunklen Bildschirm kannst du ...“
Optionen

Also, es passiert auch, wenn ich die Befehle in der Kommandozeile eingebe, also gar nicht per Batch. Und ich weiss jetzt auch warum bzw. warum genau weiss ich nicht (das kannst du mir vielleicht sagen), aber ich weiss, was man tun kann damit es geht. Und zwar scheint er trotz des Ausführens von CMD als Administrator nur den ersten Befehl unter diesem User auszuführen. Wenn ich danach einen Befehl eingebe, führt er nichts aus. Erst wenn ich mit runas den Administrator-Benutzer erneut eingebe, um Explorer zu starten, will er erst das Passwort nochmal und danach startet er tatsächlich neu. Ist das ein normales Verhalten? Wenn ja, wie kommt es zu Stande und wie kann man das irgendwie umgehen, wenn man per C++-Befehl den Explorer refreshen will?

bei Antwort benachrichtigen
Sovebämse Nachtrag zu: „Also, es passiert auch, wenn ich die Befehle in der Kommandozeile eingebe, also gar nicht per Batch. Und ich weiss jetzt ...“
Optionen

Also, ich habe vor 6 Jahren schon mal sowas programmiert und habe in meinem alten Programm einen Befehl gefunden, der immer funktioniert. Anscheinend hab ich den damals irgendwo im Netz gefunden:

wmic process where name=\"explorer.exe\" call terminate

Damit geht's auch mit dem Admin.

bei Antwort benachrichtigen
hddiesel Sovebämse „Also, ich habe vor 6 Jahren schon mal sowas programmiert und habe in meinem alten Programm einen Befehl gefunden, der immer ...“
Optionen

wmic process where name=\"explorer.exe\" call terminate

Anscheinend hab ich den damals irgendwo im Netz gefunden:
mcse.körbel.at/links/290/wmi/wmic.htm

Windows 10 Pro 64-Bit, 22H2: MS Office Pro Plus 2016 32-Bit: Mein Motto: Leben und leben lassen: Gruss Karl
bei Antwort benachrichtigen
Borlander Sovebämse „Desktop schwarz wenn als Admin der Explorer beendet wird“
Optionen
damit es einen Refresh gibt

Was soll denn da refreshed werden?

explorer.exe ist (oder war es zumindest als ich das letzte mal davon gehört habe) u.A. auch für die Darstellung von Desktop und Taskleiste zuständig und nicht nur von Datei-Browser-Fenstern.

bei Antwort benachrichtigen
Sovebämse Borlander „Was soll denn da refreshed werden? explorer.exe ist oder war es zumindest als ich das letzte mal davon gehört habe u.A. ...“
Optionen

Mein Programm pinnt per Syspin automatisch einige Taskleisten-Symbole an. Vorher werden jedoch alle entfernt, indem in der Registry ein Key und die zugehörigen Verknüpfungen im Ordner gelöscht werden. Dazu braucht es den Refresh. Ich würde sagen, eigentlich nur aus optischen Gründen. Aber mein Problem weitet sich nun aus, da mein Programm falsche Registry-Werte löscht, wenn man sich mit einem Admin-Konto anmelden muss, um das Programm zu starten. Dann werden die Registry-Werte des Admin-Kontos gelöscht und nicht diejenigen des Benutzers, bei dem das eigentlich geschehen sollte.

bei Antwort benachrichtigen
Borlander Sovebämse „Mein Programm pinnt per Syspin automatisch einige Taskleisten-Symbole an. Vorher werden jedoch alle entfernt, indem in der ...“
Optionen
Vorher werden jedoch alle entfernt, indem in der Registry ein Key und die zugehörigen Verknüpfungen im Ordner gelöscht werden. Dazu braucht es den Refresh.

Also da würde ich mir Gedanken machen über einen sauberen Weg. Der dann ohne Verrenkungen wie ein töten des Explorer-Prozesses auskommt…

bei Antwort benachrichtigen
Sovebämse Borlander „Also da würde ich mir Gedanken machen über einen sauberen Weg. Der dann ohne Verrenkungen wie ein töten des ...“
Optionen

Naja, diese Verrenkung ist eigentlich nur dazu da, dass der User ohne Neustart gleich den Effekt des Programms sieht, das ist alles. Ich denke, es gibt auch keine Alternative und was heisst "sauber"? Warum ist der Neustart des Explorer-Prozesses unsauber?

bei Antwort benachrichtigen
Borlander Sovebämse „Naja, diese Verrenkung ist eigentlich nur dazu da, dass der User ohne Neustart gleich den Effekt des Programms sieht, das ...“
Optionen

Sauber wäre wohl etwas in dieser Richtung (über offizielle und stabile Systemaufrufe): https://docs.microsoft.com/de-de/windows/apps/design/shell/pin-to-taskbar

Dann sollte die Konfigurationsänderung auch sofort sichtbar werden

Warum ist der Neustart des Explorer-Prozesses unsauber?

Das geht schon damlt los, dass Du den Prozess mit /f hart beendest; ohne die Garantie, das er sich sauber beendet.

bei Antwort benachrichtigen
Sovebämse Borlander „Sauber wäre wohl etwas in dieser Richtung über offizielle und stabile Systemaufrufe : ...“
Optionen

Hm, wie findet man den entsprechenden offiziellen Befehl für C++?

Nun, falls sich der Prozess nicht sauber beendet, ist das auch nicht weiter schlimm. Es geht ja nur darum, die Darstellung zu aktualisieren. Falls das nicht geschieht, passiert es spätestens bei der nächsten Anmeldung.

bei Antwort benachrichtigen
Borlander Sovebämse „Hm, wie findet man den entsprechenden offiziellen Befehl für C ? Nun, falls sich der Prozess nicht sauber beendet, ist das ...“
Optionen
wie findet man den entsprechenden offiziellen Befehl für C++?

Die APIs sind vielfach sprachunabhängig. Das wäre aber ansonsten vielleicht auch eher eine Frage fürs Programmier-Brett…

Nun, falls sich der Prozess nicht sauber beendet, ist das auch nicht weiter schlimm.

Das Risiko was damit einhergeht kann nur der Entwickler der getöteten Anwendung wirklich beurteilen. Von außen kannst Du da nur mutmaßen. Es gibt gute Gründe warum man Anwendungen die Möglichkeit einräumt sich selbst sauber zu beenden (und damit einen konsistenten Zustand zu hinterlassen).

Beim Explorer könnte das Töten des Prozesses dazu führen, dass ein laufender Kopiervorgang unterbrochen wurde und der Nutzer am Ende davon ausgeht, dass dieser erfolgreich abgeschlossen wurde. Dadurch droht dann im Falle einer Löschung des Originals der Datenverlust.

Es geht ja nur darum, die Darstellung zu aktualisieren.

Und dafür riskierst Du erhebliche Nebeneffekte, und kannst Dir bei Registry-Eingriffen nicht sicher sein, dass diese auf Dauer funktionieren, weil Du keine dokumentierte Schnittstelle nutzt.

bei Antwort benachrichtigen
Sovebämse Borlander „Die APIs sind vielfach sprachunabhängig. Das wäre aber ansonsten vielleicht auch eher eine Frage fürs Programmier-Brett ...“
Optionen

Das mit dem Risiko mag stimmen ja. Könnte möglicherweise irgendwann zu einer vermurksten Taskbar führen. Aber diesen "Workaround" gibt es schon lange, habe ich vor 6 Jahren schon mal gemacht und es gab keine Probleme.

Wegen dem Risiko von Datenverlust, wenn der Explorer abgeschossen wird: Klar, sowas kann möglich sein. Mein Programm ist aber dazu gedacht, die erstmalige Einrichtung eines Rechners zu vollziehen. Die Wahrscheinlichkeit, dass der Benutzer beim erstmaligen Starten des Rechners gleich irgendwas kopiert, ist praktisch gleich null. Ich sehe deinen Punkt, sicherlich ist es möglich, dass irgendein anderer systeminterner Speichervorgang damit abgeschossen wird, das will ich nicht negieren. Aber in solchen Fällen repariert sich Windows ja normalerweise bei einem Neustart in den meisten Fällen "von selbst".

bei Antwort benachrichtigen
Borlander Sovebämse „Das mit dem Risiko mag stimmen ja. Könnte möglicherweise irgendwann zu einer vermurksten Taskbar führen. Aber diesen ...“
Optionen
Mein Programm ist aber dazu gedacht, die erstmalige Einrichtung eines Rechners zu vollziehen.

Erfolgt dann vor erstmaliger Nutzung nicht sowieso eine Neustart?

Die Wahrscheinlichkeit, dass der Benutzer beim erstmaligen Starten des Rechners gleich irgendwas kopiert, ist praktisch gleich null. Ich sehe deinen Punkt, sicherlich ist es möglich, dass irgendein anderer systeminterner Speichervorgang damit abgeschossen wird, das will ich nicht negieren.

Gerade Fehler die nur selten auftreten und keine unmittelbaren sichtbaren Folgen zeigen sind besonders gefährlich.

bei Antwort benachrichtigen
Sovebämse Borlander „Erfolgt dann vor erstmaliger Nutzung nicht sowieso eine Neustart? Gerade Fehler die nur selten auftreten und keine ...“
Optionen

Die Laptops werden mit einem Master geimaged. Die Grundeinstellungen (erstmalige Einrichtung) bezieht sich auf jeden User, der sich anmeldet. Wobei diese Geräte persönliche Geräte sind, auf denen nur genau diese Person Admin-Rechte hat. Die Geräte werden auch fast nur von diesen Personen verwendet. Daher gibt es in dem Sinne keinen automatischen Neustart mehr, könnte ich aber wahrscheinlich auch so programmieren.

bei Antwort benachrichtigen
Borlander Sovebämse „Die Laptops werden mit einem Master geimaged. Die Grundeinstellungen erstmalige Einrichtung bezieht sich auf jeden User, ...“
Optionen

Dann würde ich mal prüfen ob man das nicht direkt in den Master integrieren kann (als Vorlage für neu eingerichtete Benutzer).

bei Antwort benachrichtigen
Sovebämse Borlander „Dann würde ich mal prüfen ob man das nicht direkt in den Master integrieren kann als Vorlage für neu eingerichtete Benutzer .“
Optionen

Könnte man, aber unser IT-Dienstleister ist etwas faul und sagt: Alles was nicht unbedingt sein muss und man ja auch ganz einfach in 5 Minuten erledigen kann, wollen sie nicht machen. Bei anderen Dingen wie z. B. der automatischen Teams-Installation oder einer vorgegebenen Taskleiste meinten sie, sie hätten mit diesen Lösungen schon Probleme gehabt und machen es deshalb nicht (mehr). Tja, was will man da machen. Ich als Supporter im Schulhaus und Hobby-Programmierer will den Mitarbeitern das Leben etwas einfacher machen, da ich weiss, es gibt unzählige ältere Mitarbeiter, die jedes Mal den Support bemühen müssen, weil sie es einfach nicht selber schaffen, die einfachsten Dinge einzurichten. Vor 6 Jahren, als das erste Mal neue Geräte ausgerollt wurden, habe ich auch selbst was gebastelt, das gut funktioniert hat. Hat! Denn nach einigen Updates funktionierte das damalige Tool, um Programme an die Taskleiste anzupinnen nicht mehr, daher muss ich jetzt was anderes verwenden. Mir ist schon bewusst, dass ich da ein Risiko eingehe, aber alle Mitarbeiter sind selber Administratoren und können mit ihren Geräten machen, was sie wollen. Wenn sie mein Programm verwenden wollen... bitte :-) Ich persönlich glaube nicht, dass es Probleme geben wird, aber ausgeschlossen ist das natürlich nie. Im schlimmsten Fall ist so ein Gerät über das Tool unseres Dienstleisters rasch wieder neu geimaged. Das könnte ich auch selber machen.

bei Antwort benachrichtigen