我使用SUBST命令创建到某个文件夹的映射驱动器。在控制台应用程序中,我可以访问该目录,而我无法访问Windows服务应用程序中的同一目录。换句话说,以下行返回false
Directory.Exists(@"x:\directory")
其中x:使用SUBST定义如下:
SUBST x: c:\xdrive
如何在Windows服务应用程序中访问子映射目录?
答案 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)
以下对我有用。
以管理员身份运行 Powershell
要将 X: 映射到 C:\XDrive,请键入:
New-ItemProperty `
-Path 'HKLM:\system\CurrentControlSet\Control\Session Manager\DOS Devices\' `
-Name "X:" -Value "\\DosDevices\C:\XDrive\"