Windows服务中的"net use"命令

12 .net windows-services

我们在使用C#.Net Framework 1.1开发的Windows服务中使用以下命令行:

net use z: \\myComputer\c$
Run Code Online (Sandbox Code Playgroud)

该服务在域帐户下运行,该帐户是"myComputer"上的本地管理员.调试代码后,我们可以看到它没有返回任何错误,但"z:"驱动器从未映射.我们已经尝试从控制台应用程序完全相同的代码,它可以正常工作.为了使这项工作,我们需要添加到服务中的是什么?

我们使用的代码包含在下面.

此致,
塞尔吉奥

startInfo.FileName = "net";  
startInfo.Arguments = string.Format(@"use {0}: \\{1}\{2}", driveLetter,
                                    computerName, folder).Trim();  
startInfo.UseShellExecute = false;  
startInfo.RedirectStandardError = true;

proc.EnableRaisingEvents = false;  
proc.StartInfo = startInfo;

proc.Start();

// If there is an error during the mapping of the drive, it will be read
// from the StandardError property which is a StreamReader object and
// be fed into the error output parameter.  
using(StreamReader errorReader = proc.StandardError)  
{  
         string standardError = string.Empty;  
    while((standardError = errorReader.ReadLine()) != null)  
    {  
        error += standardError + " ";  
    }  
}  
proc.WaitForExit();  
Run Code Online (Sandbox Code Playgroud)

Mic*_*urr 17

来自http://msdn.microsoft.com/en-us/library/ms685143.aspx:

必须访问远程资源的服务(或在不同安全上下文中运行的任何进程)应使用通用命名约定(UNC)名称来访问资源.该服务必须具有访问资源的适当权限.如果服务器端服务使用RPC连接,则必须在远程服务器上启用委派.

驱动器号不是系统的全局信件.每个登录会话都会从A到Z接收自己的一组驱动器号.因此,在不同用户帐户下运行的进程之间无法共享重定向的驱动器.此外,服务(或在其自己的登录会话中运行的任何进程)无法访问在不同登录会话中建立的驱动器号.

服务不应该通过映射的驱动器号直接访问本地或网络资源,也不应该在运行时调用net use命令来映射驱动器号.


Joe*_*orn 0

您可能需要指定用于登录的帐户。在命令提示符下键入net use /?以获取使用该命令进行设置的帮助。