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.
you can use the following code to UnMap or remove the mapping.
I have documented the detailed steps here
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" ?
There are two issues:
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.
All issues solved by using Map Network Drive (API) to map network drive. I map required drives while OnStart event of service.
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