当前位置:网站首页 / WPF / 正文

WPF以Clickonce方式发布后使用管理员身份运行

时间:2017年03月30日 | 作者 : aaronyang | 分类 : WPF | 浏览: 1263次 | 评论 0

1)右键项目属性


2)选择安全性,勾选“启用ClickOnce安全设置”


3)在项目的Properties文件夹中,找到app.mainfest


4)将节点


<requestedExecutionLevel level="asInvoker" uiAccess="false" /> 

改为

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 

5)回到项目属性中的安全性选项,去掉“启用ClickOnce安全设置”。


6)保存,编译


一直到现在,都还是顺利的,


7)发布。。。报错!


错误 6 ClickOnce does not support the request execution level 'requireAdministrator'.



这是什么狗屁错?继续搜索,搜索的结果都是说要在项目属性页面中,安全性选项卡中的“启用ClickOnce安全设置”去掉勾选。


那就去掉勾选,然后重新发布,仍旧报错,回到安全性选项卡中发现,“启用ClickOnce安全设置”又被勾选上了。


奇怪了。。。。。


网上搜索了N久,终于找到了解决办法


为了使得发布之后的程序能够获得管理员的权限


1)app.mainfest文件中


<requestedExecutionLevel level="asInvoker" uiAccess="false" /> 

节点的值设置为 asInvoker

2)在App.cs中增加以下代码:


/// <summary>

        /// 检查是否是管理员身份

        /// </summary>

        private void CheckAdministrator()

        {

            var wi = WindowsIdentity.GetCurrent();

            var wp = new WindowsPrincipal(wi);


            bool runAsAdmin = wp.IsInRole(WindowsBuiltInRole.Administrator);


            if (!runAsAdmin)

            {

// It is not possible to launch a ClickOnce app as administrator directly,

// so instead we launch the app as administrator in a new process.

var processInfo = new ProcessStartInfo(Assembly.GetExecutingAssembly().CodeBase);


// The following properties run the new process as administrator

processInfo.UseShellExecute = true;

processInfo.Verb = "runas";


// Start the new process

try

{

   Process.Start(processInfo);

}

catch (Exception ex)

{

   ex.WriteLog();

}


// Shut down the current process

Environment.Exit(0);

            }

        }

3)重写 OnStartup 函数


protected override void OnStartup(StartupEventArgs e)

        {

base.OnStartup(e);


CheckAdministrator();

//如果不是管理员,程序会直接退出,并使用管理员身份重新运行。

StartupUri = new Uri("MainWindow.xaml", UriKind.RelativeOrAbsolute);

        }

4)保存,重新生成,发布


加入上面的代码之后,重新使用ClickOnce方式发布,安装。在运行的时候,会弹出“您想允许来自未知发布者的以下程序对此计算机进行更改吗”的对话框,点击“是” 程序就会以管理员身份运行了。


推荐您阅读更多有关于“WPF,”的文章

猜你喜欢

额 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

  查看权限

合肥科大智能常年招聘C# .NET CORE,vue前端,JAVA开发,有想换工作的私聊我AY唯一QQ:875556003和AY交流

抖音号:wpfui,可以看到我的很多作品效果,私活合作请qq联系我

AYUI8社区版Github地址:前往获取

作者:杨洋(AaronYang简称AY,安徽六安人)目前是个人,还没公司AY唯一QQ:875556003和AY交流

高中学历,2015年1月17日开始,兴趣学习研究WPF,目前工作繁忙,不接任何活

声明:AYUI7个人与商用免费,源码可购买。部分DEMO不免费.AY主要靠卖技术服务挣钱

不是从我处购买的ayui7源码,我不提供任何技术服务,如果你举报从哪里买的,我可以帮你转正为我的客户,并送demo

查看捐赠

AYUI7.X MVC教程 更新如下:

第一课 第二课 程序加密教程

vs2015 企业版密钥HM6NR-QXX7C-DFW2Y-8B82K-WTYJV

vs2017 企业版密钥NJVYC-BMHX2-G77MM-4XJMR-6Q8QF

标签列表