强制应用程序具有管理员权限

我需要授予我的应用程序管理员权限,因为它知道它将从用户会话而不是管理员帐户运行。

我看过其他网站,但找不到任何有用的东西。

我尝试编辑清单和其他东西,并插入了行:

 

尝试使用ClickOnce发布时,这给了我一个错误,但在我调试时却没有。

你能帮助我吗?

首先 – 确实,设计不允许安装和ClickOnce应用程序作为管理员: http : //msdn.microsoft.com/en-us/library/142dbbz4 (v = vs。90).aspx

看一下这篇文章: http : //antscode.blogspot.ca/2011/02/running-clickonce-application-as.html – 它解释了如何以管理员身份运行ClickOnce应用程序。 但是 – 它必须说我走过了这条道路 – 而且我没有太多运气。 这种方法遇到了很多麻烦(尝试使用管理员权限运行ClickOnce应用程序)。 据我所知,最大的问题是自动更新无法正常工作。 更不用说非管理员用户可能需要一直输入管理员凭据。

所以我的建议是重新考虑你的逻辑,并在一个单独的EXE文件中封装你需要作为管理员完成的部分 – 并且让用户非常清楚,当他点击那个按钮时,UAC提示会出现(可能是添加“盾牌”图标到按钮)。 在那个button_click事件中做这样的事情:

 // 2. Run Photoshop action on this image (and wait for the task to complete) if (string.IsNullOrWhiteSpace(this.PhotoshopEnhanceActionAbsPath) == false) { var pi = new ProcessStartInfo(this.PhotoshopEnhanceActionAbsPath, "\"" + imgPhotoshopActionAbsPath + "\""); pi.UseShellExecute = true; pi.Verb = "runas"; var photoshopAction = Process.Start(pi); var success = photoshopAction.WaitForExit(); if (success == false) { // do something here } } 

这种方法对我来说非常有效。 关键在于:

 pi.UseShellExecute = true; pi.Verb = "runas"; 

它以管理员权限运行您的EXE – 因此此时将显示UAC提示。 这里的另一个好结果是,用户每次使用应用程序时都可能无法运行这个特定的逻辑 – 因此当他们不需要时,他们不会被提示烦恼。

我很确定这种行为是设计的。

ClickOnce应用程序可在没有管理员权限的情况下进行安装。 它不可能在运行时提升它们,因为这意味着可以有效地安装没有管理员权限的用户然后以管理员身份运行应用程序; 这将是一个安全风险。