【问题标题】:Cannot start a Windows service not located in the 'Program Files' folder on Windows 7无法启动不在 Windows 7 上的“程序文件”文件夹中的 Windows 服务
【发布时间】:2010-02-10 05:28:42
【问题描述】:

我最近切换到 Windows 7 作为我的开发机器。我使用的软件组件之一是 Windows 服务。我用来调试服务的技巧之一是使服务注册表值指向我的服务调试版本。然后我启动服务并使用 VS.NET 附加到进程。

但是,当我尝试在 Windows 7 上执行此操作并尝试启动服务的“调试”版本时,我收到一条错误消息,告诉我“访问被拒绝”。我认为我的服务调试版本一定有问题。但为了解决问题,我尝试在“程序文件”下创建一个名为“DebugService”的文件夹,将调试构建文件夹的内容复制到该文件夹​​并将服务指向该位置。然后我就可以正常启动服务了。

有人在 Windows 7 中遇到过这个限制吗?必须将构建输出复制到“程序文件”中的文件夹很不方便,而且我的服务在打开此“程序文件”文件夹中的某些文件时也遇到权限问题(已安装的服务版本没有此类问题)。

我可以对 Windows 7 做些什么来告诉它可以启动位于“程序文件”之外的文件夹中的服务吗?

【问题讨论】:

    标签: windows-7 windows-services


    【解决方案1】:

    嘿,我不认为 Program Files 有什么特别之处...但是很可能你的构建位置有什么特别之处:它属于你,而不是用户组。假设您没有以自己(或 SYSTEM)的身份运行该服务,这会使它处于尝试运行无法访问其自己代码的程序的尴尬境地!

    我只是在根目录之外建立了一个单独的目录树,可供用户组访问,并在那里构建我的东西。但是您当然可以将必要的权限分配给您已经在使用的任何目录。

    【讨论】:

    • 你是对的。与 Windows 7 的不同之处在于我的代码文件夹不授予“用户”组任何权限。一旦我授予“用户”组权限,该服务就可以正常启动。非常感谢。
    • 有趣的是,Windows 7 是第一个我没有按照您的建议在根目录下创建文件夹的操作系统。通过将我的代码放在我的文档文件夹中,我认为我是一名优秀的操作系统公民。
    • 嘿,好吧...我将用户目录用于真正个人的事情,但开发工作往往过于频繁地越界,不方便。 FWIW,我相信 XP 实际上在默认情况下在 SYSTEM 帐户下运行服务,从而使它们能够访问整个文件系统 - 您可能可以想象为什么这在 Vista 和 Win7 中发生了变化。
    猜你喜欢
    • 2012-04-10
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    相关资源
    最近更新 更多