“的ClickOnce不支持请求执行水平‘requireAdministrator。’”(“Clic

2019-06-25 11:17发布

所以我在写需要访问注册表中的应用程序。 我没有触及任何构建设置,想要得到的东西的工作之前,我添加了其他触摸,如描述或名称。

出于蓝,我得到的是不会消失的错误。 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将没有错误,你的申请将被以管理员身份运行



文章来源: “ClickOnce does not support the request execution level 'requireAdministrator.'”