how do I Refresh "My Computer" network drives for vb 2005 data access

Since windows 2000 came out there has been annoying red "X" on My Computer's network drives.

If you click on them, they go away and the files are displayed.

In VB 2005, the mycomputer.filesystem.drives.item(n) does not refesh them and directory.getfiles("P:\") returns an error "could not find part of the path P:\"

When I double click on P: in my computer, the error goes away and I can read the files again.

This is annoying becuase I write a lot of network applications.

How can I implement code in my program to refresh drive "P:"?

I just tried :

Using swAs StreamWriter =New StreamWriter("P:\temp.log")

That does not work also...

[1068 byte] By [MikeCutts] at [2007-12-24]
# 1

I am getting the same problem but in VB6.

Can anyone suggest a way to refresh the database on form load?

MCH1989 at 2007-8-31 > top of Msdn Tech,Visual Basic,Visual Basic General...
# 2

The only workaround I have is to use URI addresses like \\server\share instead of inactive drive mappings. It is really annoying having to code my programs to trap a "\" in the drive name field and ask for the address. Looks like we are stuck with this one.

Mike

MikeCutts at 2007-8-31 > top of Msdn Tech,Visual Basic,Visual Basic General...
# 3

It is really annoying having to code my programs to trap a "\" in the drive name field and ask for the address

All my programs use the unc path, never mapped drive. it never asks for the address either. The only thing that cause problem is that if one of the machine got rebooted and the share has password, one will get error accessing the unc path. It seems that the work around is to run "net use" first to map the drive.

gudel at 2007-8-31 > top of Msdn Tech,Visual Basic,Visual Basic General...
# 4

I think this link will be helpfull.

http://visualbasic.ittoolbox.com/groups/technical-functional/visualbasic-l/how-to-refresh-online-database-path-880741

Hope this can help!

If it's the right answer to your question please mark it as Answer.

Best Regards,

AmrOuf at 2007-8-31 > top of Msdn Tech,Visual Basic,Visual Basic General...
# 5

Try this:

Dim prcProcess As New System.Diagnostics.Process

With prcProcess

'DELETE NETWORK DRIVE

With .StartInfo

.FileName = "net.exe"

.Arguments = "use x: /delete"

.UseShellExecute = False

.CreateNoWindow = True

End With

Call .Start() 'Drive is unmounted

Call .WaitForExit()

'CREATE NETWORK DRIVE

With .StartInfo

.FileName = "net.exe"

.Arguments = "use x: \\192.168.0.3\Mp3s"

.UseShellExecute = False

.CreateNoWindow = True

End With

Call .Start() 'Drive is mounted

Call .WaitForExit()

End With

prcProcess.Dispose()

prcProcess = Nothing

for more information about How to connect and disconnect a network drive in Windows XP please visit http://support.microsoft.com/kb/308582/en-us

Hope this can help!

Best Regards,

Amr Ouf


If you see this POST is the answer to your quesiton, please mark as an answer.

AmrOuf at 2007-8-31 > top of Msdn Tech,Visual Basic,Visual Basic General...
# 6

Thank you Amr.

This is like everything else in VB, a nudge in the right direction. I hope that one day they will make it as simple as system.io.net.refresh("S:")

I have another common annoying problem tonight. (I have 4 computers, 1 xp home as a server, 1 98 workstation and 2 - win 2k laptops.) When I use \\server names on my laptop or net use commands, I get "Error 71...No More Connections can be made" I think that microsoft really made a bad money decision with this "10 resource connection" limit to workstations.

I think I might end up installing linux servers for me and my customers in the future.

System.diagnostics looks interesting. I wish also that there was an quicker, easier, more organized way to find the system calls like microsoft.visualbasic.left() or system.IO.path... I spend most of my time hunting for solutions to simple problems in VB.

My other beef is with Microsoft bug reporting.... I have found bugs in XP home and I can not let microsoft know without paying them for support. There should be an easier way for the general public to tell microsoft what is not working.

Thanks again for the solutions, they are functional workarounds.

Mike

MikeCutts at 2007-8-31 > top of Msdn Tech,Visual Basic,Visual Basic General...
# 7

This is a C# snipet but can be converted to VB if necessary.

Call this before accessing a mapped drive.

System.Diagnostics.Process.Start("net.exe", @"use P: \\server\share");

System.Threading.Thread.Sleep(2000); // wait 2 seconds for system to catch up of loop your next hits....

This will launch the DOS Net functions and refresh the drive availability.

Downside to this method is you will get the CMD window popup. Just set the properties of the

CMD window to Close on Exit and make the window size small enough not to be annoying. This

will work, I have validated it even from a cold boot.

This method does negate the value of using drive letter associations so I will be researching a better

way so the server name/share does not need to be defined. I have always prefered drive letter association

since I create industrial applications that are implemented globally. With drive letter association the users of

the apps setup the drive association at the OS level and not the app level so the app does not care what server

it is referencing. Good luck trying to get an I.T. guy to change his server name to match your app !

PointerKing at 2007-8-31 > top of Msdn Tech,Visual Basic,Visual Basic General...