我想在Windows服务中映射网络驱动器上的clearcase视图
我尝试使用net use
命令,但它无法正常工作。
答案 0 :(得分:1)
您应该能够运行与used when paths are too long相同的命令,即 subst
:
subst X: c:\path\to\my\View # for snapshot view
subst X: M:\myView # for dynamic view
以便将视图映射到驱动器号。
这应该在服务中起作用,提供:
M:\
MVFS
安装点驱动器中可见)答案 1 :(得分:1)
我希望这种方法能够奏效,但它确实不是来自服务;我已经非常激烈地击败了这个问题而无济于事。问题是双重的:
所以(1)和(2)是相互排斥的,但你需要做两件事而不能做。对于(2),大概是你不能“与桌面交互”和映射驱动器的原因是因为你需要一个登录会话/令牌,它必须存在才能使映射的驱动器工作 - 每个用户会话关联 - - 但是,如果没有“会话”/令牌存在,服务需要能够无头(无人登录)。
请注意,Rational BuildForge为ClearCase解决此问题的方法是生成一个全新的子进程,仅允许其服务与ClearCase通信:
另请注意,“登录会话”由 唯一 标记标识;这意味着即使您有一个可以访问ClearCase的所需用户(domain \ fred)运行的进程,也可以从 作为同一用户 (域)生成新进程\ fred)默认情况下可能没有相同的会话令牌,具体取决于它是如何创建的(即CreateProcess()vs CreateProcessAsUser()vs CreateProcessWithLogonW()),这使得处理你无法控制的工具变得更加困难。为了演示这一点,请尝试从命令提示符运行'runas / user:'cmd / k \“net use \”“',您将看到所有网络驱动器都列为”不可用“(!!)。
有可能(尽管明确不推荐Microsoft),如果你能以某种方式设法让用户始终登录以获得他们的会话,那么就可以全力以赴令牌,如下所述:
starting a UAC elevated process from a non-interactive service (win32/.net/powershell)
否则,你必须像BuildForge一样模仿它。
另见:
对于这类问题,我通常会遇到作为Windows服务运行的CI服务器(CC.NET / Hudson / TeamCity)。我必须做的是确保在我真正的“工作”开始之前的某个地方,我编写了一种方法来映射网络驱动器,通过在运行时重新映射它们或将M:\映射到带有subst的可用驱动器号(非常繁琐) )正如VonC描述的那样,这是不持久的(即使你使用'net use / persistent:yes'),这也是我猜你也希望的。