我使用 SUBST 命令将映射驱动器创建到某个文件夹。在控制台应用程序中,我可以访问该目录,而在 Windows 服务应用程序中我无法访问同一目录。换句话说,以下行返回 false
Directory.Exists(@"x:\directory")
其中 x: 使用 SUBST 定义如下:
SUBST x: c:\xdrive
如何访问 Windows 服务应用程序中的子映射目录?
我使用 SUBST 命令将映射驱动器创建到某个文件夹。在控制台应用程序中,我可以访问该目录,而在 Windows 服务应用程序中我无法访问同一目录。换句话说,以下行返回 false
Directory.Exists(@"x:\directory")
其中 x: 使用 SUBST 定义如下:
SUBST x: c:\xdrive
如何访问 Windows 服务应用程序中的子映射目录?
Subst 存在于您的注册表配置单元中。Windows 服务必须在您访问时运行。更改服务的凭据。
如果这不可能,那么您可以以编程方式创建指向该位置的链接。例如通过调用 System.Process 来运行cmd.exe /c subst
命令。
问题是使用子集命令制作的虚拟驱动器仅对制作它的用户可见。该服务正在使用另一个用户权限运行,因此它对服务应用程序不可见。
如果您的服务作为本地系统运行,请按照此处的说明进行操作:
http://blogs.msdn.com/b/adioltean/archive/2004/11/29/271987.aspx
这将为您提供一个作为本地服务运行的命令提示符以获取您的 subst 命令
这里描述了几种方法来源: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\"