Visual Studio输出文件权限?

22

我正在使用Visual Studio 2010,如何将输出文件(例如可执行文件)的所有者设置或自动更改为除管理员以外的用户?

由于Visual Studio是以管理员权限启动的,所有输出文件当前都归管理员所有。因此,有时由于访问权限问题,我无法删除这些文件。

有时候即使在运行可执行文件后,Visual Studio本身也无法立即删除它们,直到几分钟后才能够删除,这对于我需要重新构建这些可执行文件时非常令人恼火。有人知道这里的实际问题是什么吗?

错误信息是:error LNK1168: cannot open [path to file].exe for writing


刚遇到了这个问题。同样的事情,句柄被PID为4的系统进程所拥有。你能否重新打开这个问题?通常最好将它们保持开放状态,即使没有当前答案,而且这显然不仅是发生在你的系统上的事情。 - Maiku Mori
看起来这解决了我的问题。谢谢你。因为愚蠢的锁定问题,我浪费了很多时间。 - GorillaApe
4个回答

33

我终于搞清楚了!

这是一个Windows 7中的BUG,很可能在Windows Server 2008中也存在(可能只限于64位版本)。当您禁用应用程序体验服务时,它就会出现。

重新启用此服务已经为我解决了这个问题。

你无法想象我有多开心,这让编程变得非常沮丧,因为它不仅影响到VC,还影响到任何编译器,最重要的是,它是相当随机的。

更多信息在这里,解释了它为什么会引起问题。

以下是其他与之相关的SO问题的列表:


这个解决方案让我感到意外,以至于我一直关闭应用程序体验,认为“这肯定没必要,可能会拖慢我的机器等等”。然后过了一段时间,我开始因锁定问题感到沮丧,然后转向谷歌。接着我重新找到这个解决方案,打开应用程序体验,并惊奇地发现它起作用了。我想我现在已经这样做了三次了。 - Dana Cartwright
1
这对我没有用。然而,我的解决方案现在加载得更快了。 - stuartd
谢谢,这个方法对我也有效。在上一次构建中,Visual Studio 2010无法删除一个它生成的.dll文件。启动“应用程序体验”服务立即解决了这个问题! - Sabuncu

8
如上所述,解决此问题的方法是启用Windows应用体验服务。以下是如何进行操作的步骤:
  1. 按下Windows键+R
  2. 在弹出的窗口中输入“services.msc”
  3. 在列表中找到“应用体验”
  4. 双击它并将其从“禁用”更改为“启用”
现在应该可以正常工作了!我自己也尝试过 :)
来源:http://www.techknowl.com/disable-unwanted-services-and-speed-up.html

0

文件创建时将由创建者拥有,如果您作为管理员运行Visual Studio,则从所有者角度而言就只能这样了。

个人认为,除非您在使用IIS进行Web应用程序,否则我发现自己越来越频繁地以普通用户身份运行Visual Studio,至少在使用VS 2010时是这样的。

关于无法删除文件的问题,我以前曾经遇到过编译错误和多个项目引用同一程序集的情况。最好的办法是尝试找出锁定,并且您可以杀死锁定或重新启动Visual Studio。

我通常使用Process Explorer(来自SysInternals)来简单地移除文件上的句柄。(注意:这不是一个“好”主意,但它可行...)


据我所知,Visual Studio始终以管理员身份运行(如果需要运行调试器之类的情况之一),在第二种情况下,我没有构建错误,你说的引用相同程序集是什么意思?与此同时,我将尝试使用Process Explorer。 - uray
我已经尝试了Process Explorer,我可以关闭句柄,但是我怎么知道哪个进程持有该句柄呢?如果我想通过Process Explorer释放句柄来重建项目,这仍然很麻烦。 - uray
如果每次在您的应用程序或Visual Studio解决方案中出现问题,您是否在Visual Studio之外运行应用程序?它是否被任何其他项目引用? - Mitchel Sellers
只有独立的控制台应用程序(例如 printf("hello world");)受到影响,除了 Visual Studio 之外没有其他应用程序。如果我在进程资源管理器中查看,文件句柄是由“System”进程拥有的。 - uray

0
没有人给出正确的答案,因此我将此问题关闭为操作系统中的一个错误,而不是在Visual Studio中,可能由于文件句柄由“System”进程(PID 4)拥有并且我无法释放该文件句柄,因为它使用进程资源管理器报告文件句柄无效。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接