所以我在写需要访问注册表中的应用程序。 我没有触及任何构建设置,想要得到的东西的工作之前,我添加了其他触摸,如描述或名称。
出于蓝,我得到的是不会消失的错误。 ClickOnce does not support the request execution level 'requireAdministrator'.
现在,我没有在这个应用程序的ClickOnce感动。 所有我做了是包括清单文件,要求这些权限。
我现在的问题是,这个错误不会消失,我不能编译我的程序。 怎样做任何意见? (附注:我即将上床睡觉,所以我会检查这个明天下午)。
Answer 1:
编辑:这评论给出了一个很好的答案了。
点击一次,只要你点击“发布”,您是否希望它与否似乎得到启用! 如果您正在使用“requireAdministrator”那么看来,你不能使用ClickOnce的,因此不能“发布”你的项目。
原版的:
原来,安全选项卡下的“启用的ClickOnce安全设置”进行了调查。 虽然我没有检查它。 总之,取消选中已停止的ClickOnce给我的错误。 这花了一段时间发现......
Answer 2:
我知道这样一个老问题,但我两年之后来到这里这样:
您可以从项目性质在安全选项卡禁用ClickOnce的帮助的问题; 见下文:
Answer 3:
如果你曾经使用发布向导,或“立即发布”,点击一次复选框被自动选中...
Answer 4:
我知道这是旧的,但我碰到它跌跌撞撞寻找答案。 就我而言,我使用的发布功能,我需要继续使用它。 我还需要获得管理员的能力。 因此,对于这个原因,上述答案的为我工作。
最后我添加一个方法,以我的应用程序,如果它正在以管理员身份运行,检查,如果不是的话,重新启动自己作为管理员的一开始。 要做到这一点,你需要以下引用添加。
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()
{
try
{
WindowsIdentity id = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(id);
return principal.IsInRole(WindowsBuiltInRole.Administrator);
}
catch (Exception)
{
return false;
}
}
最后,在程序的开始,增加了方法的引用。 就我而言,我添加它来主窗口,但它添加到主要工作过。
public MainWindow()
{
InitializeComponent();
AdminRelauncher(); //This is the only important line here, add it to a place it gets run early on.
}
希望这可以帮助!
Answer 5:
看看在你的app.Manifest文件,你会看到这一点:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
有说明那里的意见,而只是删除“requireAdministrator”并插入这是地方解决了这个问题对我来说:
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
Answer 6:
我有同样的问题的I通过取消选中“ 启用的ClickOnce安全设置”找到在Visual Studio这个选项右击你的项目==>属性==>选择安全性==>启用的ClickOnce安全设置 (此选项是解决这个问题已经检查所以我未选中它,我的问题得到解决)。
Answer 7:
这个动作可以通过选择“启用的ClickOnce安全设置”(因为它不能被“选中”期间发布,如前所述)来实现,然后通过选择“这是部分信任的应用程序”。 “本地Intranet”将自动在这是完全正常的下拉菜单中选择。
保存更改,发布应用程序,完成-滑雪板。 :-)
Answer 8:
下面是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-软件阻止您的代码部署。
Answer 9:
只是
Imports System.security
和U将没有错误,你的申请将被以管理员身份运行