【问题标题】:Visual Studio output file permissions?Visual Studio 输出文件权限?
【发布时间】:2024-05-03 16:20:03
【问题描述】:

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

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

有时,Visual Studio 本身也无法删除它(在我运行可执行文件之后),直到几分钟,当我需要重建这些可执行文件时,它真的很烦人。有谁知道这里的实际问题是什么?

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

【问题讨论】:

  • 刚刚遇到这个问题。同样,句柄由 PID 4 的系统进程拥有。您能否再次打开问题,通常最好让 em 打开,即使没有当前答案,这显然不是您的系统发生的事情。
  • 似乎这解决了我的问题.. 谢谢.. 由于愚蠢的锁定问题,我浪费了很多时间...

标签: visual-studio file visual-studio-2010 permissions administrator


【解决方案1】:

Wooho我终于想通了。

这是 Windows 7 和 Windows Server 2008(可能仅限 64 位版本)中的一个错误。当您禁用 Application Experience 服务时,它会出现。

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

你无法想象我有多高兴,这让编程变得如此令人沮丧,因为它不仅会弄乱 VC,而且任何编译器都会弄乱,而且最重要的是它是非常随机的。

更多信息 here 为何会导致问题。

似乎相关的其他 SO 问题列表:

【讨论】:

  • 这个解决方案太出乎意料了,以至于我一直在关闭应用程序体验,认为“这没有必要,可能会减慢我的机器等”。过了一会儿,我开始对锁定问题感到沮丧,于是求助于谷歌。然后我找到了回到这个解决方案的方法,重新打开应用程序体验,并惊讶于它的工作原理。我想我已经这样做了 3 次了。
  • 这对我不起作用。但是,我的解决方案现在加载速度更快。
  • 谢谢,这也对我有用。 Visual Studio 2010 无法删除它在先前版本中生成的 .dll。启动应用程序体验服务立即修复它!
【解决方案2】:

如上所述,解决此问题的方法是启用 Windows 应用程序体验服务。这样做的方法如下:

  1. Windows 键 + R
  2. 在弹出的窗口中输入“services.msc”
  3. 在列表中,找到“应用程序体验”。
  4. 双击它并从“禁用”更改为“启用”

它现在应该可以工作了!为我工作:)

来源:http://www.techknowl.com/disable-unwanted-services-and-speed-up.html

【讨论】:

    【解决方案3】:

    好吧,创建的文件将归创建者所有,如果您以管理员身份运行 Visual Studio,那么从所有者的角度来看,您只是坚持使用它。

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

    关于 Visual Studio 无法删除文件的问题,我之前看到过构建错误,有时如果您有多个项目引用同一个程序集。最好的办法是尝试追踪锁定,然后您可以终止锁定或重新启动 Visual Studio。

    我通常使用 Process Explorer(来自 SysInternals)来简单地删除文件上的句柄。 (注意:这不是一个“好”的想法,但它确实有效....)

    【讨论】:

    • AFAIK Visual Studio 始终以管理员身份运行(如果我需要运行调试器则为其中一种情况),在第二种情况下,我没有构建错误,您所说的引用是什么意思同样的程序集?同时我会尝试Process Explorer。
    • 我试过 Process Explorer,我可以关闭句柄,但是我怎么知道,哪个进程持有句柄?,如果我想通过总是释放句柄来重建项目,它仍然很烦人进程资源管理器。
    • 如果每次都是这样,您的应用程序或 Visual Studio 解决方案中都会发生一些事情。您当时是否有在 Visual Studio 之外运行的应用程序?它是否被任何其他项目引用?
    • 没有其他应用程序(除了VS),它的独立项目(和/或任何项目)只是像printf("hello world");这样的简单控制台应用程序受到影响,顺便说一下文件句柄归System进程所有如果我查看 Process Explorer
    【解决方案4】:

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

    【讨论】: