Das könnte daran liegen, das Windows aktive SMB Sessions Standardmäßig nach 15 Minuten trennt und diese dann erst wieder aktiviert wird wenn Du zB im Explorer auf das "verbundene" Laufwerk klickst. Bis Windows XP kann ich dir dafür ne Funktion anbieten, die
API wurde allerdings bei Vista entfernt und ich habe bis jetzt auch noch keinen anständigen Ersatz finden können.
Delphi-Quellcode:
type
TWNetRestoreConnectionW = function (hwndParent:HWND; lpDevice:PWideChar):DWORD; stdcall;
function ReconnectDrive(const path:string):DWORD;
var
libhandle : HMODULE;
func : TWNetRestoreConnectionW;
driveW : WideString;
begin
Result:= ERROR_EXTENDED_ERROR;
driveW := ExtractFileDrive(path);
if driveW='' then
Exit;
libhandle := LoadLibrary('mpr.dll');
Result := 0;
if libhandle=0 then
Exit;
try
func := TWNetRestoreConnectionW(GetProcAddress(libhandle, 'WNetRestoreConnectionW'));
if Assigned(func) then
Result := func(0, @driveW[1]);
finally
FreeLibrary(libhandle);
end;
end;
Rückgabewerte und mehr Infos
hier.