C#2005控制台应用程序始终需要提升权限

时间:2009-11-25 06:29:03

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

我正在尝试在Windows Vista下的C#2005 express版本中构建自动化应用程序。问题是,每当我尝试运行此应用程序时,无论是从IDE还是在vista下直接编译的可执行文件,它都要求提升管理员权限,同样的可执行文件通常在XP下运行!

我无法理解这个问题是由于清单还是别的......

谢谢,

3 个答案:

答案 0 :(得分:3)

首先,我会update to 2008 Express; 2005 Express不再可供下载,但2008 Express仍然可以瞄准.NET 2.0,此外还有3.0 / 3.5的优点。它仍然是免费的。实际上,2010 Express即将来临!特别是,您会发现越来越难找到能够回答2005 Express IDE特定问题的人,因为很少有人会安装2005 Express。


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

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

哪个应该(IIRC)帮助 - 但是a:应用程序在哪里运行,以及b:它做了什么? (它是否尝试编辑注册表等)。

答案 1 :(得分:3)

除了Marc的答案之外:如果可执行文件具有'setup'或'install'作为其名称的一部分,则无论清单如何,UAC都会要求管理员权限。唯一的解决方法是将.exe重命名为不包含这些关键字的内容。

编辑:'更新'也是一个关键字。有关UAC,请参阅此Technet article

答案 2 :(得分:0)

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

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