I'm trying to map network drive from windows service, I use batch file for executing the following command
NET USE U: \\192.168.55.6\folder password
While executing batch file either in service constructor or in onstart event, drive is not mapped?
Process process = new Process();
process.StartInfo.FileName = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\MAP.BAT";
process.StartInfo.CreateNoWindow = false;
process.Start();
How does one map network drive from windows service?
This can be achieved using a reference to Windows Script Host Object Model.
Add a COM reference to Windows Script Host Object Model which adds an entry IWshRuntimeLibrary to the references section. Now you can use the following code to map a drive.
using IWshRuntimeLibrary;
IWshNetwork_Class network = new IWshNetwork_Class();
network.MapNetworkDrive("k:",@"\\192.168.20.35\MyShare", Type.Missing, "user1", "password1");
you can use the following code to UnMap or remove the mapping.
network.RemoveNetworkDrive("k:");
I have documented the detailed steps here
All issues solved by using Map Network Drive (API) to map network drive. I map required drives while OnStart event of service.
It might be better to just call the right API function, instead of calling a batch file to call another executable. The function you're looking for is DefineDosDevice()
Are you running the service under the user account that belongs to the password? The MAP USE
command will use the current user, unless you pass /USER:anotheruser
I think services can't map network drives unless they have the right "interact with desktop" ?
Try to run the service under the "Network Service" account, instead of "Local System" ?
As far as I know, a mapped drive is only mapped for the duration of the user session. If your windows service is running on startup, or is otherwise not part of a user session, the drive mapping is lost.
This may or may not be true but it is worth looking into - I remember something about it from a similar scenario I had about 7 years ago.