AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Netzlaufwerk trennen Buchstabe bleibt
Thema durchsuchen
Ansicht
Themen-Optionen

Netzlaufwerk trennen Buchstabe bleibt

Ein Thema von gmc616 · begonnen am 24. Sep 2010 · letzter Beitrag vom 4. Okt 2010
Antwort Antwort
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#1

Netzlaufwerk trennen Buchstabe bleibt

  Alt 24. Sep 2010, 09:37
Hallo DP,

Ich verbinde im meiner Application ein Netzlaufwerk und trenne es anschließend wieder.

Zu Trennen nutze ich
WNetCancelConnection2(PWideChar(Laufwerk),CONNECT_UPDATE_PROFILE, TRUE);
Das Laufwerk wird korrekt getrennt, nur bleibt im Exporer der Laufwerksbuchstabe zurück mit dem Name "Nicht verbundenes Netzlaufwerk"

Wie bekomme ich den Laufwerksbuchstaben wieder frei?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Netzlaufwerk trennen Buchstabe bleibt

  Alt 24. Sep 2010, 10:22
Eigentlich sollte CONNECT_UPDATE_PROFILE dafür sorgen, dass der Laufwerksbuchstabe "befreit" wird (sofern ich das MSDN richtig verstanden habe). Welchen Wert gibt die Funktion denn zurück?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Netzlaufwerk trennen Buchstabe bleibt

  Alt 24. Sep 2010, 10:25
Ich kenne es zwar auch so das im Explorer weiterhin das Laufwerk angezeigt wird aber der Buchstabe ist, wenn ich mich richtig erinnere, trotzdem frei um wieder genutzt zu werden.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Netzlaufwerk trennen Buchstabe bleibt

  Alt 24. Sep 2010, 14:30
WNetCancelConnection2(..) gibt NO_ERROR zurück.
Ich kann/könnte den Laufwerksbuchstaben auch wieder frei für ein neues Netzlaufwerk verwenden. Das passt schon.


Allerdings suche ich mir vor dem Netzlaufwerk-Verbinden einen freien Laufwerksbuchstaben herraus.
Da aber der Explorer die getrennten Netzlaufwerksbuchstaben beibehält, bekommen ich immer wieder einen neuen Buchstaben zurück, bis ich letztendlich keinen Buchstaben mehr zur Verfügung habe.

PseudoCode:
Delphi-Quellcode:
For LW := 'Zdownto 'Cdo
  if Not DriveIsReady(LW) then
     Result := LW;

DriveIsReady:
Delphi-Quellcode:
function DriveIsReady(const Drive: string): Boolean;
  var
    wfd : TWin32FindData;
    hFindData : THandle;
  begin
    SetErrorMode(SEM_FAILCRITICALERRORS);
    hFindData := FindFirstFile(Pointer(Drive + '*.*'), wfd);
    if hFindData <> INVALID_HANDLE_VALUE then
    begin
      Result := True;
    end
    else
    begin
      Result := False;
    end;
    Windows.FindClose(hFindData);
    SetErrorMode(0);
  end;
Letztendlich habe ich "eine ganze Latte" an getrennten Netzlaufwerken in meinem Explorer stehen, die alle frei wären, aber mein Programm findet keinen freien Laufwerksbuchstaben. Das is 'n bissl doof!

Entweder muß ich der Funktion DriveIsReady etwas ändern, damit sie getrennte Laufwerke berücksichtigt (nur was ), oder aber ich kriege den Laufwerksbuchstaben aus dem Explorer, was mir lieber wäre.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Netzlaufwerk trennen Buchstabe bleibt

  Alt 24. Sep 2010, 14:47
Ich würde die Funktion DriveIsReady ändern. Es gibt eine Funktion mit der man sich alle Laufwerksbuchstaben zurück geben lassen kann. Vielleicht gibt diese andere Werte zurück.
Ansonsten: Wenn du sowieso jedes Laufwerk einzeln prüfst ob es belegt ist, kannst du auch in einer Schleife alle Buchstaben durchlaufen und versuchen ein Netzlaufwerk zu verbinden bis kein Fehler zurück gegeben wird.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Netzlaufwerk trennen Buchstabe bleibt

  Alt 24. Sep 2010, 15:04
Ich würde die Funktion DriveIsReady ändern. Es gibt eine Funktion mit der man sich alle Laufwerksbuchstaben zurück geben lassen kann. Vielleicht gibt diese andere Werte zurück.
GetLogicalDriveStrings gibt mir alle Laufwerke wieder, allerdings auch die getrennten Netzlaufwerke.
Was anderes hab ich noch nicht gefunden.

Ansonsten: Wenn du sowieso jedes Laufwerk einzeln prüfst ob es belegt ist, kannst du auch in einer Schleife alle Buchstaben durchlaufen und versuchen ein Netzlaufwerk zu verbinden bis kein Fehler zurück gegeben wird.
Hmmm ... könnte man tun, finde ich aber nicht so toll.
Und es bleibt immer noch die Tatsache, dass der Laufwerksbuchstabe im Explorer sichtbar bleibt.
Muß ja in meinem Fall nicht jeden sehen, dass da ein Netzlaufwerk gemappt wurde.
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#7

AW: Netzlaufwerk trennen Buchstabe bleibt

  Alt 24. Sep 2010, 17:05
Wenn das nicht jeder sehen soll, dann könntest Du doch auch das Netzwerklaufwerk ohne Mapping über den UNC-Pfad benutzen?
  Mit Zitat antworten Zitat
CodeX

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

AW: Netzlaufwerk trennen Buchstabe bleibt

  Alt 4. Okt 2010, 13:04
Zu Trennen nutze ich
WNetCancelConnection2(PWideChar(Laufwerk),CONNECT_UPDATE_PROFILE, TRUE); Das Laufwerk wird korrekt getrennt, nur bleibt im Exporer der Laufwerksbuchstabe zurück mit dem Name "Nicht verbundenes Netzlaufwerk"
Dann bin ich also nicht der einzige mit diesem Problem. Dies scheint irgendein Bug der Funktion zu sein, denn das Problem tritt nicht bei allen Systemen auf! Bei den meisten Systemen verschwindet der Laufwerksbuchstabe aus dem Explorer wieder, bei manchen nicht.
Ich wäre brennend an der Ursache interessiert bzw. noch mehr an einer Lösung dafür. Es kommt durchaus auch ein Workaround in Frage. Der die Buchstaben explizit wieder freigibt. Hat jemand eine Idee?
  Mit Zitat antworten Zitat
Benutzerbild von simmi
simmi

Registriert seit: 24. Nov 2004
Ort: Röbel/Müritz
112 Beiträge
 
Delphi XE5 Professional
 
#9

AW: Netzlaufwerk trennen Buchstabe bleibt

  Alt 4. Okt 2010, 13:27
Ich nutze die Funktion so
 WNetCancelConnection2('T:',0, True); und bei XP und Windows 7 verschwindet das Laufwerk auch vom Arbeitsplatz und vom Explorer. Einziger Unterschied statt "CONNECT_UPDATE_PROFILE" schreibe ich die "0".
Uwe
  Mit Zitat antworten Zitat
Antwort Antwort


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:58 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