2009-11-25 48 views
1

我想在windows vista下的C#2005 express版本中构建自动化应用程序。问题是,无论何时我尝试运行此应用程序,无论是从IDE还是在Vista下直接编译的可执行文件,它都会要求提升管理员权限,但同一个可执行文件通常在XP下运行!C#2005控制台应用程序总是需要提升的权限

我无法理解,如果这个问题是由于表现还是其他什么东西......

感谢,

+0

只是其他人给出的答案的旁注。 Windows XP没有UAC,因此用户通常具有管理员权限,因此不存在任何问题。这是人们在Vista中使用UAC时遇到的最大问题,那就是设计的软件设计不当(软件在UAC出现时不会/不应该是必须的),因此在XP下运行良好。 – 2009-11-25 06:43:12

回答

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)的帮助 - 但一个:其中该应用从,和b运行:它有什么作用? (它是否尝试编辑注册表等)。

+0

感谢Marc的回复,但我在此处发布之前尝试了此解决方案,但未解决问题。 :( – DexTer 2009-11-25 07:48:11

3

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

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

+2

有趣的,不知道,出于好奇,但你有一个信息来源? – RCIX 2009-11-25 06:39:21

+0

在technet描述: http://technet.microsoft.com/en-us/library/cc709628( WS.10).aspx 此外'更新'就是这样一个关键字。 – 2009-11-25 06:43:25

0

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

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