问题
I have a C# application which loads at startup, and logs data to a network drive, which is mounted as X:
When the machine first boots, the application throws an error that X:\ is not available. If I restart the app, same error.
However, if I open Windows Explorer and double click to browse the drive, I can then run the application and it will connect to X: just fine.
Do network drives not automatically initialise on startup, despite being mapped? Is there a way to set them to initialise automatically?
回答1:
Ive had the exact same issue. I don't know if there are better methods out there, but I added this to my code before accessing the mapped drive.
Process mapDrive = new Process();
mapDrive.StartInfo.FileName = "net.exe";
mapDrive.StartInfo.Arguments = @"use c: \\server\share";
mapDrive.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
mapDrive.Start();
That way whether the drive is available at start up or not it will always be available.
回答2:
See How Can I Access a Mapped Network Drive here on SO for a list of things to check. My guess is either the drive does not exist for your user, or there is a permissions issue accessing it. Another item to check is the order in which you call Impersonate, assuming that you are doing so, that is.
According to Cannot Access Files On Mapped Drive From Windows Service you should not do this at all. See the Microsoft link(s) provided in the accepted answer.
来源:https://stackoverflow.com/questions/10029825/network-drive-not-available-on-startup