【问题标题】:C# 2005 console application always requires elevated privilegesC# 2005 控制台应用程序始终需要提升的权限
【发布时间】:2026-01-10 12:00:01
【问题描述】:

我正在尝试在 windows vista 下的 C# 2005 express edition 中构建一个自动化应用程序。问题是,每当我尝试从 IDE 或直接在 vista 下编译的可执行文件运行此应用程序时,它都会要求提升管理员权限,但相同的可执行文件在 XP 下正常运行!

我无法理解这个问题是由于清单还是其他原因......

谢谢,

【问题讨论】:

  • 只是其他人给出的答案的旁注。 Windows XP 没有 UAC,因此用户通常具有管理员权限,因此不会有任何问题。这是人们在 Vista 中使用 UAC 时遇到的最大问题,只是设计不佳的软件(在不需要/不应该需要时弹出 UAC 的软件)因此在 XP 下运行良好。

标签: c# .net windows-vista console-application uac


【解决方案1】:

首先,我会update to 2008 Express; 2005 Express 不再可供下载,但 2008 Express 除了提供 3.0/3.5 的优点外,仍然可以针对 .NET 2.0。它仍然是免费的。其实,2010 Express 指日可待!特别是,您会发现越来越难找到能够回答 2005 Express IDE 特定 问题的人,因为很少有人仍然安装 2005 Express。


添加应用程序清单文件(通过 IDE) - 它将显示为 app.manifest;它应该添加(默认情况下):

<requestedExecutionLevel level="asInvoker" uiAccess="false" />

(IIRC)应该提供哪些帮助 - 但 a:应用程序从哪里运行,b:它有什么作用? (是否尝试编辑注册表等)。

【讨论】:

  • 感谢 Marc 的回复,但我在发布之前尝试了这个解决方案,但它并没有解决我的问题。 :(
【解决方案2】:

除了 Marc 的回答:如果可执行文件的名称中包含“setup”或“install”,则 UAC 会要求管理员权限,而不管清单如何。唯一的解决方法是将 .exe 重命名为不包含这些关键字的名称。

编辑:“更新”也是这样一个关键字。另请参阅 Technet article 关于 UAC。

【讨论】:

【解决方案3】:

如果您的应用程序尝试执行需要提升权限的操作(例如写入 Program Files 文件夹或注册表的某些区域),则需要请求提升权限,否则它将失败。在 XP 下,它根本不会要求提升;如果它没有运行所需的权限,它就会失败(但通常人们在 XP 下以管理权限运行,所以这通常不是问题)

要在现有答案中添加一个“陷阱”: 如果您使用 .exe 上的文件属性(兼容性选项卡)来强制它“以管理员身份运行”,它在运行时总是会要求提升。不直观的是,这将永久应用于 路径名,因此即使您删除 .exe 并安装新的,“以管理员身份”设置仍然适用!您必须专门打开属性并禁用该属性才能再次将其删除。

【讨论】:

    最近更新 更多