“ClickOnce不支持请求执行级别requireAdministrator”。
所以我正在写一个需要访问registry的应用程序。 我没有触及任何构build设置,希望在添加其他触摸(如描述或名称)之前使其工作。
突然之间,我得到一个不会消失的错误。 ClickOnce does not support the request execution level 'requireAdministrator'.
现在,我没有在这个应用程序中触及ClickOnce。 我所做的只是包含一个请求这些权限的清单文件。
我现在的问题是,这个错误不会消失,我不能编译我的程序。 有什么build议在做什么? (旁注:我即将上床,明天下午我会检查一下)。
编辑:这个评论也给出了一个很好的答案。
点击一次,只要点击“发布”就会启用,无论您是否愿意! 如果您使用“requireAdministrator”,那么看起来您不能使用ClickOnce,因此不能“发布”您的项目。
原版的:
事实certificate,在安全选项卡下,选中“启用ClickOnce安全设置”。 即使我没有检查它。 无论如何,取消选中停止ClickOnce给我错误。 这花了一段时间find…
我知道这是一个古老的问题,但两年后我来到了这里:
您可以从项目的“安全”选项卡上禁用ClicKOnce以解决问题; 见下文:
如果您曾经使用发布向导或“立即发布”,则自动select一次点击checkbox…
看看你的app.Manifest文件,你会看到这个:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
在评论中有说明,但只是删除“requireAdministrator”,并插入这个地方解决了我的问题:
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
我知道这是旧的,但我偶然发现它寻找答案。 在我的情况下,我使用发布function,我需要继续使用它。 我也需要访问pipe理function。 所以出于这个原因,上面的答案都没有为我工作。
我最终在我的应用程序开始时添加了一个方法,检查它是否以pipe理员身份运行,如果不是,则以pipe理员身份重新启动。 为此,您需要添加以下参考。
using System; using System.Diagnostics; using System.Reflection; using System.Security.Principal;
那么你将需要把这个地方,你的主要方法有方便的访问。 我使用WPF,所以我将它添加到MainWindow.xaml.cs中,但是可以在代码中的任何地方尽早添加它。 只要记住要添加“静态”这些方法,如果你需要它。
private void AdminRelauncher() { if (!IsRunAsAdmin()) { ProcessStartInfo proc = new ProcessStartInfo(); proc.UseShellExecute = true; proc.WorkingDirectory = Environment.CurrentDirectory; proc.FileName = Assembly.GetEntryAssembly().CodeBase; proc.Verb = "runas"; try { Process.Start(proc); Application.Current.Shutdown(); } catch(Exception ex) { Console.WriteLine("This program must be run as an administrator! \n\n" + ex.ToString()); } } } private bool IsRunAsAdmin() { WindowsIdentity id = WindowsIdentity.GetCurrent(); WindowsPrincipal principal = new WindowsPrincipal(id); return principal.IsInRole(WindowsBuiltInRole.Administrator); }
最后,在程序的开始处,添加对该方法的引用。 在我的情况下,我将它添加到MainWindow中,但将其添加到Main作品中。
public MainWindow() { InitializeComponent(); AdminRelauncher(); //This is the only important line here, add it to a place it gets run early on. }
希望这可以帮助!
我有同样的问题我通过取消选中“ 启用ClickOnce安全设置”来解决它在Visual Studio中find此选项右键单击您的项目==>属性==>select安全性==>启用ClickOnce安全设置 (此选项是已经检查,所以我没有选中它,我的问题得到解决)。
这个动作可以通过select“启用ClickOnce安全设置”来实现(因为它在发布期间不能被“取消选中”,如上所述),然后select“这是部分信任应用程序”。 “本地内联网”将在下拉菜单中自动select,非常好。
保存您的更改,发布应用程序,完成滑雪。 🙂
这是VB.NET的代码片段
If Not New WindowsPrincipal(WindowsIdentity.GetCurrent).IsInRole(WindowsBuiltInRole.Administrator) Then Process.Start(New ProcessStartInfo With { _ .UseShellExecute = True, _ .WorkingDirectory = Environment.CurrentDirectory, _ .FileName = Assembly.GetEntryAssembly.CodeBase, _ .Verb = "runas"})
编辑:但是,如果你以这种方式部署,一些AV软件阻止你的代码。
只是
Imports System.security
U将不会出错,您的应用程序将以pipe理员身份运行
- 错误:日志目录不存在/ var / mobile / Library / Logs / CrashReporter / DiagnosticLog /
- C编译错误:“可变大小的对象可能不会被初始化”
- Javatypes推断:在Java 8中引用是不明确的,但不是Java 7
- FBSOpenApplicationErrorDomain代码= 3
- 在C#4.0中命名参数和genericstypes推断
- Xcode显示了许多错误,但程序编译和运行良好(在模拟器和设备)
- 如何使用OpenSSL编译.c文件?
- 无法打开输出文件,权限被拒绝
- 一个奇怪的C ++错误:test.cpp:15:错误:作为'*'的'this'parameter passing'const *'丢弃限定符