Windows services 如何在Windows服务中映射Clearcase视图的网络驱动器?

Windows services 如何在Windows服务中映射Clearcase视图的网络驱动器?,windows-services,networking,clearcase,drive,Windows Services,Networking,Clearcase,Drive,我想在windows服务内的网络驱动器上映射clearcase视图。 我已尝试使用net use命令,但它无法正常工作。您应该能够运行与命令相同的命令: subst X: c:\path\to\my\View # for snapshot view subst X: M:\myView # for dynamic view 以便将视图映射到驱动器号 这应该在服务中起作用,前提是: 您正在使用Windows帐户(而不是“本地系统帐户”) 动态视图已经启动(并且在M:\MVFS安装点驱动器中可见

我想在windows服务内的网络驱动器上映射clearcase视图。

我已尝试使用
net use
命令,但它无法正常工作。

您应该能够运行与命令相同的命令:

subst X: c:\path\to\my\View # for snapshot view
subst X: M:\myView # for dynamic view
以便将视图映射到驱动器号

这应该在服务中起作用,前提是:

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

我希望这种方法能奏效,但它实际上并不是从一项服务开始的;我在这个问题上花了相当大的力气,但毫无结果。问题有两个方面:

  • 从Windows服务中,为了能够映射其他用户可见的驱动器,它必须使用“与桌面交互”属性集以“本地系统”帐户(默认)身份“登录”
  • 为了能够与ClearCase对话,Windows服务进程必须以具有ClearCase访问权限的普通用户身份“登录”(例如,通常在atria组中)
  • 所以(1)和(2)是互斥的,但是你需要两者都做,但不能。对于(2),您无法“与桌面交互”和映射驱动器的原因可能是因为您需要登录会话/令牌,该会话/令牌必须存在,映射驱动器才能工作(与每个用户会话相关),但服务需要能够在不存在“会话”/令牌的情况下运行headless(无人登录)

    请注意,Rational BuildForge为ClearCase解决此问题的方法是生成一个全新的子进程,只允许其服务与ClearCase对话:

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

    如果您能够设法让用户始终登录以获取其会话令牌,则可以(尽管Microsoft明确建议而不是),尽最大努力使这一切正常工作,如下所述:

    否则,您将不得不像BuildForge那样模仿它

    另见:


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

    在W7下,使用您的帐户映射驱动器是否仍然有效?“我还没做呢!”保罗:不确定。我现在正在工作,所以我使用Windows Xp。加上ClearCase还没有正式支持W7。@VonC:非常正确,这是一个很好的观点。但是我认为W7的支持现在很快就出现了,所以这是一个需要考虑的问题(当然,除非这个系统的生命周期中,这个盒子可以专用于XP)。Hi VonC,我在LoalStar帐户中使用Windows服务。我已经将clearcase视图映射到机器A上的“P:”驱动器上。我想将机器B上的clearcase视图映射到“P:”驱动器上,但使用windows服务。我该怎么做?我使用了“Net use”命令,但它不起作用。@ankit:这就是我的观点。您不应使用
    net use
    ,而应使用
    net share
    。注意:如果目标是在每个windows会话中映射该路径,那么将其封装在脚本中并将该脚本复制到配置文件的启动目录中会更容易,以便在每次登录时进行共享。(
    C:\Document and Settings\MyLogin\Start Menu\Programs\Startup
    C:\Users\MyLogin\Start Menu\Programs\Startup