Disconnect from samba share

Sometimes during the same Windows (Vista) session i have to connect to the same (samba) file server in a workgroup (no domain) as another user. It seems Windows has cached the current connection with user info. To force a new authentification i run a batch script:

@echo off
net use * /delete /y
net use * /delete /y
net use * /delete /y
net use * /delete /y
net use * /delete /y 

But this sometime works and sometimes doesn't and force me to close the Windows session.

Is there a way to completely disconnect from actual shares to login as a new user.

Update

I have no program open, no drive letter connected and "net use" empty but still the IPC$ share open on the samba server (smbstatus).

Now adding

net use \\server\IPC$

and again

net use * /delete /y

And "net use" complains about open files or searches in folders with \server\IPC$ (message in spanish).

I think Vista is still holding the share for searching and indexing.

Update 2

I think i get this now: i stopped "Windows Search" service and after running the batch i get asked again for credentials.


Right-clicking on the drive in My Computer and saying disconnect is the most reliable way that I've found. Problems usually arise when you have a file on one of the shares held open by some process.

However, rather than disconnect when you need to access the shares as another user why don't you add a netbios alias to samba so you can use the shares with 2 different users simultaneously?

For example, if your server was named "servername" you could add this line in /etc/samba/smb.conf:

netbios aliases = altservername

Restart samba and you can then connect to \\altservername\share with a new user and windows won't care. Connecting to the IP address would probably work too but this has always seemed easier to me.


You can stop the "Workstation" service. This handles all SMB shares so restarting it will flush these connections.

  1. As an Administrative user, open the Services panel (Start, type services.msc and press Enter).
  2. Search for Workstation in the list on the right.
  3. Right-click Workstation, and click Restart. Wait for the progress bar to go through.