SUBST和控制台应用程序与Windows服务

时间:2009-12-10 09:41:39

标签: .net mapped-drive

我使用SUBST命令创建到某个文件夹的映射驱动器。在控制台应用程序中,我可以访问该目录,而我无法访问Windows服务应用程序中的同一目录。换句话说,以下行返回false

Directory.Exists(@"x:\directory")

其中x:使用SUBST定义如下:

SUBST x: c:\xdrive

如何在Windows服务应用程序中访问子映射目录?

4 个答案:

答案 0 :(得分:3)

Subst存在于您的注册表配置单元中。必须运行Windows服务才能访问它。更改服务的凭证。

如果无法做到这一点,那么您可以通过编程方式创建指向该位置的链接。例如通过调用System.Process来运行cmd.exe /c subst命令。

答案 1 :(得分:1)

问题是使用子命令创建的虚拟驱动器仅对创建它的用户可见。该服务正在使用其他用户权限运行,因此服务应用程序将无法看到它。

答案 2 :(得分:0)

如果您的服务以本地系统运行,请按照此处的说明进行操作:

http://blogs.msdn.com/b/adioltean/archive/2004/11/29/271987.aspx

这将使您获得作为本地服务运行的命令提示符以接收您的subst命令

答案 3 :(得分:0)

这里描述了几种方法 来源:https://en.wikipedia.org/wiki/SUBST#Registry_(DOS_Devices)

以下对我有用。

  1. 以管理员身份运行 Powershell

  2. 要将 X: 映射到 C:\XDrive,请键入:

    New-ItemProperty  `
      -Path 'HKLM:\system\CurrentControlSet\Control\Session Manager\DOS Devices\' `
      -Name "X:" -Value "\\DosDevices\C:\XDrive\"