2010-02-24 78 views

回答

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 

为了映射视图到一个驱动器号。

这应该从服务中工作,提供:

  • 您使用的Windows帐户(而不是“本地系统帐户”)
  • 动态视图已启动(并在可见M:\MVFS安装点驱动)
+0

使用您的帐户映射驱动器仍然在W7下工作吗?我还没有做到这一点。 – 2010-02-24 09:23:27

+0

@保罗:不确定。我现在正在工作,所以我使用Windows XP。另外ClearCase尚不支持*正式* W7。 – VonC 2010-02-24 09:37:16

+0

@VonC:非常真实,很好。但我认为W7支持现在即将推出,所以这是值得考虑的事情(除非该系统的生命周期内该盒子可以专用于XP)。 – 2010-02-24 09:42:36

1

我希望这种方法是有效的,但它确实从服务不确实;我已经非常强烈地殴打这个问题而无济于事。问题是双重的:

  1. 从Windows服务,能够映射驱动器对其他用户可见它与“互动“本地系统”帐户(默认值)为“登录”桌面“属性集。
  2. 为了能够与ClearCase交谈,Windows服务进程必须以具有ClearCase访问权的普通用户(例如典型的心房组)的身份“登录”。

所以(1)和(2)是相互排斥的,但你需要做到两者兼而不可。对于(2),大概你不能“与桌面互动”和地图驱动器的原因是因为你需要一个登录会话/令牌,映射驱动器必须存在才能工作 - 关联的每用户会话 - 但是服务需要能够在没有“会话”/令牌存在的情况下运行无头(无人登录)。

注意的是,这样的Rational BuildForge解决了这个对ClearCase是通过产生一个全新的子过程仅允许其服务交谈的ClearCase:

还要注意, “登录会话”由唯一的标识符标识;这意味着即使您有一个作为您想要的用户(域\ fred)运行的进程可以访问ClearCase,也可以从那里产生一个新进程,因为同一用户(domain \ fred)可能没有相同的会话令牌默认情况下,取决于它是如何创建的(即CreateProcess()vs CreateProcessAsUser()vs CreateProcessWithLogonW()),这使得处理你无法控制的工具变得更加困难。为了证明这一点,请尝试从命令提示符运行'runas/user:“cmd/k \”net use \“”',您将看到所有网络驱动器列为“不可用”(!!)。

这是可能的(虽然明确建议微软),以极大的努力,让这一切工作,如果你能以某种方式设法在经常登录从中获取他们的会话令牌的用户,如所描述在这里:

starting a UAC elevated process from a non-interactive service (win32/.net/powershell)

否则,你就必须像BuildForge不会效仿。

另见:

对于这类问题,我通常使用CI服务器运行到它(CC.NET /哈德森/ TeamCity)作为Windows服务运行。我必须做的是确保在真正的“工作”开始之前的某个地方,我编写了一种映射网络驱动器的方法,方法是在运行时重新映射网络驱动器或将M:\映射到带有subst的可用驱动器盘符(非常乏味),正如VonC所描述的那样,这不是持久的(即使你使用'net use/persistent:yes'),这也是我猜你也希望得到的。

相关问题