AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Windows-Bug mit bestimmter Netzlaufwerkskonstellation (*Herausforderung gesucht?*)

Windows-Bug mit bestimmter Netzlaufwerkskonstellation (*Herausforderung gesucht?*)

Offene Frage von "CodeX"
Ein Thema von CodeX · begonnen am 18. Aug 2015 · letzter Beitrag vom 31. Aug 2015
Antwort Antwort
Seite 2 von 4     12 34   
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#11

AW: Windows-Bug mit bestimmter Netzlaufwerkskonstellation (*Herausforderung gesucht?*

  Alt 18. Aug 2015, 10:40
Nun ja, ein Video, wo du zwei Explorer Fenster siehst, von denen ich das eine Fenster überwache und in dem anderen Fenster das Laufwerk verbinde und wieder trenne, wäre schon etwas Overkill.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#12

AW: Windows-Bug mit bestimmter Netzlaufwerkskonstellation (*Herausforderung gesucht?*

  Alt 18. Aug 2015, 11:15
Und welche Einstellungen genau? "Additional Windows"? Welche Auswahl bei "Messages"?
Und der zweite Teil meiner Frage nach der Deutung der zweiten Message?
Mensch, jetzt lass Dir doch nicht alles aus der Nase ziehen.
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#13

AW: Windows-Bug mit bestimmter Netzlaufwerkskonstellation (*Herausforderung gesucht?*

  Alt 18. Aug 2015, 12:26
Nach einer Stunde mit dem API Monitor weiß ich nun zumindest, dass net.exe bei net use z: /disconnect intern auch einfach nur MSDN-Library durchsuchenWNetCancelConnection2 aufruft. Das erklärt das gleiche Resultat. Beim Trennen über den Explorer habe ich den Aufruf dieser Funktion allerdings nicht gefunden. Scheinbar macht er das also irgendwie anders!? Das Problem ist, dass die explorer.exe auch noch für tausend andere Dinge zuständig ist und das Monitoring entsprechend viel aufzeichnet, was mich gar nicht interessiert. Ich habe versucht, mich Stück für Stück manuell durchzuhangeln, habe aber leider nicht gesehen, wo das Laufwerk dann tatsächlich getrennt wird. Ich sehe zwar viele Zugriffe auf das Laufwerk wie MSDN-Library durchsuchenPathGetDriveNumber oder MSDN-Library durchsuchenWNetGetConnection, aber damit alleine komme ich leider nicht weiter.
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.

Geändert von CodeX (18. Aug 2015 um 12:28 Uhr)
  Mit Zitat antworten Zitat
einbeliebigername

Registriert seit: 24. Aug 2004
140 Beiträge
 
Delphi XE8 Professional
 
#14

AW: Windows-Bug mit bestimmter Netzlaufwerkskonstellation (*Herausforderung gesucht?*

  Alt 18. Aug 2015, 13:02
Hallo,

habe jetzt nicht herauslesen können, ob du auch darauf geachtet hast, dass das zu überwachende Explorer-Fenster in einem eigenen Prozess ausgeführt wird. Auch könnte ich mir vorstellen, das es helfen könnte, den Explorer als einen anderen Benutzer auszuführen. Ich könnte mir auch vorstellen das die Nachricht an einen anderen Systemprozess geht, und der Explorer über eine andere API davon erfährt. Probiere doch auch mal einen alternativen Dateibrowser wie Total Commander, ob der sich anders verhält oder andere Aktionen auslöst. Auf alle fälle wirst du viele Nachrichten und API-Funktionen durch Recherche und/oder probieren ausschließen müssen, um die Richtige zu finden.

einbeliebigername.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#15

AW: Windows-Bug mit bestimmter Netzlaufwerkskonstellation (*Herausforderung gesucht?*

  Alt 18. Aug 2015, 13:31
Und welche Einstellungen genau? "Additional Windows"? Welche Auswahl bei "Messages"?
Und der zweite Teil meiner Frage nach der Deutung der zweiten Message?
Mensch, jetzt lass Dir doch nicht alles aus der Nase ziehen.
Öhm, einfach ein Explorer Fenster ausgewählt (Titellsite des Fensters) und keine Einschränkungen bei den Messages oder so gemacht.

Dieses überwachte Fenster lasse ich dann komplett in Ruhe und arbeite mit einem anderen Explorer-Fesnter um die Aktionen auszuführen.

Nach dem Verbinden eines Netzlaufwerks schaue ich mir die Meldungen an ... aha, so viele
Und nach dem Trennen des Netzlaufwerks speichere ich die Meldungen in eine Datei.

Mehr ist/war da nicht.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#16

AW: Windows-Bug mit bestimmter Netzlaufwerkskonstellation (*Herausforderung gesucht?*

  Alt 18. Aug 2015, 13:42
das zu überwachende Explorer-Fenster in einem eigenen Prozess ausgeführt wird
Wie sollte das gehen?

Auch könnte ich mir vorstellen, das es helfen könnte, den Explorer als einen anderen Benutzer auszuführen.
Das Ausführen des Explorers unter einem anderen lokalen Benutzer hat bei einem kurzen Test nicht funktioniert.

Probiere doch auch mal einen alternativen Dateibrowser wie Total Commander, ob der sich anders verhält oder andere Aktionen auslöst.
Gleiches Fehlverhalten bei:
  • Total Commander
  • FileZilla
  • "Wizzard" im Explorer: Hauptmenü (ALT-Taste) > Tools > Netzlaufwerk trennen ... > Auswahl
  • Windows API (WNetCancelConnection2)
  • Kommandozeile (net.exe)
  • Aufrufen des Kontextmenüs per API: z.B. per Jcl DisplayContextMenu
  • Aufrufen des Kontextmenüs über die professionelle Komponente "ShellBrowser" von JAM Software

Funktioniert fehlerfrei:
  • Rechtsklick auf Netzlaufwerk im Explorer > Trennen

Das größte Rätsel ist für mich ja weiterhin, warum das Ausführen des Befehls über das Kontextmenü nicht funktioniert, wenn man das Kontextmenü in einer anderen Software aufruft. Ich dachte, das wäre zwar eine Notlösung, muss aber funktionieren, da hier exakt derselbe Kontextmenüpunkt aufgerufen wird.
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.679 Beiträge
 
Delphi 5 Professional
 
#17

AW: Windows-Bug mit bestimmter Netzlaufwerkskonstellation (*Herausforderung gesucht?*

  Alt 18. Aug 2015, 14:35
Auch könnte ich mir vorstellen, das es helfen könnte, den Explorer als einen anderen Benutzer auszuführen.
Das funktioniert ohne Klimmzüge ab Vista nicht mehr (ebensowenig wie das Ausführen als Administrator).

@CodeX: Wie hast du beim Total Commander das Netzlaufwerk getrennt? Via Rechtsklick auf die Pfadleiste (um das Kontextmenü des Laufwerks zu bekommen) und dann Klick auf Trennen oder mit Menü Netz > Netzlaufwerk trennen, das den Systemdialog aufruft? Wenn letzteres: was passiert, wenn du im Explorer diesen Dialog ebenfalls bemühst/benutzt?

MfG Dalai
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#18

AW: Windows-Bug mit bestimmter Netzlaufwerkskonstellation (*Herausforderung gesucht?*

  Alt 18. Aug 2015, 14:45
@Dalai: Ich habe beide Varianten ausprobiert. Die aus dem Hauptmenü öffnet den gleichen Wizzard wie der Explorer. Bei beiden funktioniert es nicht (siehe auch meine Auflistung im letzten Beitrag). Der Rechtsklick entfernt das Icon auch nicht. Ich nehme an, dass das Kontextmenü auf die gleiche Weise aufgerufen wird, wie ich es zuvor schon versucht habe (ebenfalls siehe Auflistung).

Wie kann denn das Kontextmenü im Explorer ein anderes Ergebnis liefern wie wenn man das Kontextmenü per API in einer anderen Software aufruft?

Edit: Ich möchte kurz darauf hinweisen, dass das Problem nicht nur auf meinem System besteht, sondern bei allen recht einfach reproduzierbar sein sollte. Wer dieses Rätsel mit eigenen Augen sehen möchte, kann dies sehr gerne selbst mal versuchen. Vielleicht packt ja noch jemand anderen der Ehrgeiz, dieses Mysterium zu lösen. Ich würde mich sehr freuen.
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.

Geändert von CodeX (18. Aug 2015 um 15:05 Uhr)
  Mit Zitat antworten Zitat
einbeliebigername

Registriert seit: 24. Aug 2004
140 Beiträge
 
Delphi XE8 Professional
 
#19

AW: Windows-Bug mit bestimmter Netzlaufwerkskonstellation (*Herausforderung gesucht?*

  Alt 18. Aug 2015, 15:44
das zu überwachende Explorer-Fenster in einem eigenen Prozess ausgeführt wird
Wie sollte das gehen?
In den Ordneroptionen unter Ansicht den Punkt "Ordnerfenster in einem eigenen Prozess starten" anhaken.

Auch könnte ich mir vorstellen, das es helfen könnte, den Explorer als einen anderen Benutzer auszuführen.
Das Ausführen des Explorers unter einem anderen lokalen Benutzer hat bei einem kurzen Test nicht funktioniert.
Das funktioniert ohne Klimmzüge ab Vista nicht mehr (ebensowenig wie das Ausführen als Administrator).
Stimmt. Als anderer Benutzer will der Explorer mit Fehlermeldung nicht mehr. Für als Admin gibt es eine Anleitung http://www.heise.de/ct/hotline/Explo...n-1258468.html.

Probiere doch auch mal einen alternativen Dateibrowser wie Total Commander, ob der sich anders verhält oder andere Aktionen auslöst.
Gleiches Fehlverhalten bei:
  • Total Commander
  • FileZilla
  • "Wizzard" im Explorer: Hauptmenü (ALT-Taste) > Tools > Netzlaufwerk trennen ... > Auswahl
  • Windows API (WNetCancelConnection2)
  • Kommandozeile (net.exe)
  • Aufrufen des Kontextmenüs per API: z.B. per Jcl DisplayContextMenu
  • Aufrufen des Kontextmenüs über die professionelle Komponente "ShellBrowser" von JAM Software

Funktioniert fehlerfrei:
  • Rechtsklick auf Netzlaufwerk im Explorer > Trennen
Habe ich das jetzt richtig erfasst? Du hast mit den oben genannten Programmen das Netzlaufwerk unter der speziellen Bedingung getrennt und der Explorer hat nicht wie erwartet reagiert. Aber wie sieht es bei den anderen Programmen aus? Reagieren die unter der Bedingung und trennen mit einem anderen Programm richtig?

Das größte Rätsel ist für mich ja weiterhin, warum das Ausführen des Befehls über das Kontextmenü nicht funktioniert, wenn man das Kontextmenü in einer anderen Software aufruft. Ich dachte, das wäre zwar eine Notlösung, muss aber funktionieren, da hier exakt derselbe Kontextmenüpunkt aufgerufen wird.
Ich glaube langsam du versuchst einen Workaround für einen Bug im Explorer zu finden. Das lässt sich aber mit zwei Explorer-Prozessen testen. Wenn sich nur der Explorer-Prozess korrekt verhält mit dem das Laufwerk getrennt wird, der andere Explorer-Prozess das Fehlverhalten zeigt und alle anderen Programme richtig reagieren, dann ist das ein Bug im Explorer. Sollte aber alle Explorer-Prozesse richtig reagieren, wenn man das mit einem der Explorer trennt, dann gibt es da noch eine Möglichkeit den Explorer nach dem Trennen auf die Sprünge zu verhelfen.

einbeliebigername.
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#20

AW: Windows-Bug mit bestimmter Netzlaufwerkskonstellation (*Herausforderung gesucht?*

  Alt 18. Aug 2015, 16:00
In den Ordneroptionen unter Ansicht den Punkt "Ordnerfenster in einem eigenen Prozess starten" anhaken.
Stimmt, das könnte weiterhelfen. Werde ich untersuchen.

Habe ich das jetzt richtig erfasst? Du hast mit den oben genannten Programmen das Netzlaufwerk unter der speziellen Bedingung getrennt und der Explorer hat nicht wie erwartet reagiert. Aber wie sieht es bei den anderen Programmen aus? Reagieren die unter der Bedingung und trennen mit einem anderen Programm richtig?
Erster Teil der Frage: Ja
Zweiter Teil: Bin mir unschlüssig, ob ich deine Frage verstehe. Grunsätzlich ist es so, dass nur der Explorer die verwaisten Laufwerke anzeigt. Nach dem Trennen tauchen diese in anderen Programmen nicht mehr auf. Man kann diese Laufwerke auch direkt im Anschluss per "Netzlaufwerk verbinden" neu zuweisen (der Wizzard zeigt die getrennten Laufwerke auch korrekt als frei an). "Lustigerweise" ändert sich der Name des Laufwerks nicht (bleibt der alte, getrennte), aber das rote X verschwindet und der Speicherkapazitätsbalken ist dann da. Wenn man das Laufwerk jetzt per Rechtsklick trennt, sieht es so aus wie zuvor. Wie das technisch sein kann, weiß ich nicht. Muss man wohl mal mit eigenen Augen gesehen haben.

Ich glaube langsam du versuchst einen Workaround für einen Bug im Explorer zu finden.
Naja, was bleibt mir anderes übrig? Ich möchte Netzlaufwerke aus meiner Software heraus trennen können. Den Anwender interessiert nicht, welche Bugs im Explorer enthalten sind. Er weiß lediglich, wenn er das von Hand macht, dann funktioniert es.

Das lässt sich aber mit zwei Explorer-Prozessen testen. Wenn sich nur der Explorer-Prozess korrekt verhält mit dem das Laufwerk getrennt wird, der andere Explorer-Prozess das Fehlverhalten zeigt und alle anderen Programme richtig reagieren, dann ist das ein Bug im Explorer. Sollte aber alle Explorer-Prozesse richtig reagieren, wenn man das mit einem der Explorer trennt, dann gibt es da noch eine Möglichkeit den Explorer nach dem Trennen auf die Sprünge zu verhelfen.
Soeben getestet: Sowohl im gleichen Prozess als auch bei zwei Fenstern in unterschiedlichen Prozessen (so wie du oben empfohlen hast) verschwindet das Icon SOFORT in beiden Fenstern, wenn man es per Rechtsklick trennt.
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.

Geändert von CodeX (18. Aug 2015 um 18:06 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz