2010-02-10 109 views
1

我最近已将Windows 7作为开发计算机切换到Windows 7。我所使用的软件的一个组件是Windows服务。我用来调试服务的技巧之一是使服务注册表值指向我的调试版本的服务。然后我启动服务并使用VS.NET附加到进程。无法启动Windows服务,位于Windows 7的“程序文件”文件夹中

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

有没有人在Windows 7中遇到过这个限制?必须将构建输出复制到“Program Files”中的文件夹是不方便的,我的服务也遇到了打开位于此“Program Files”文件夹中的某些文件的权限问题(安装的服务版本没有此类问题)。

是否有一些我可以对Windows 7做的事情,告诉它可以启动位于不在'Program Files'下的文件夹中的服务?

回答

2

嘿,我不认为有什么特别的Program Files文件...但很可能什么特别的你的构建的位置:它属于你,而不是给用户组。假设你没有像你自己(或者SYSTEM)那样运行这个服务,那就让它处于试图运行一个不能访问它自己的代码的程序的不舒服状态!

我刚刚建立了一个独立的目录树,可以通过Users组访问,并在那里构建我的东西。但是你当然可以将必要的权限分配给你已经使用的任何目录。

+0

你说得对。与Windows 7的区别在于我的代码文件夹不会授予“用户”组的任何权限。一旦我授予“用户”组权限,服务启动就好了。非常感谢。 – jmatthias 2010-02-10 05:50:34

+0

有趣的是,Windows 7是第一个操作系统,我不是刚刚根据你的建议创建了一个根目录下的文件夹。我认为我是通过将我的代码放入我的文档文件夹来成为一名优秀的操作系统公民。 – jmatthias 2010-02-10 06:26:58

+0

呃,好吧......我用我的用户目录来描述真正属于个人的东西,但是开发工作往往过于频繁以致不方便。 FWIW,我相信XP在默认情况下实际上在SYSTEM帐户下运行服务,因此可以让他们访问整个文件系统 - 您可以想象为什么在Vista和Win7中改变了这一点。 – Shog9 2010-02-10 06:48:17

相关问题