升级程序为独立的exe程序,由客户端程序调用实现。

客户端调用部分

/* 客户端代码中,调用更新程序部分 */
static bool CheckUpdate()
{try{//string tmpFileName = System.IO.Directory.GetCurrentDirectory() + "\\" + "Update.exe";//Process p = Process.Start(tmpFileName, (CommonSetting.SchoolCode + "+" + CommonSetting.SchoolPassword + "+" + CommonSetting.Url));//p.WaitForExit();//启动客户端升级程序string tmpFileName = System.IO.Directory.GetCurrentDirectory() + "\\" + "xxx客户端升级程序.exe";string argu1 = "\"" + CommonSetting.SchoolCode + "\"";          //向exe传递的参数1string argu2 = "\"" + CommonSetting.SchoolPassword + "\"";     //向exe传递的参数2string argu3 = "\"" + CommonSetting.Url + "\"";                //向exe传递的参数3Process p = new Process();p.StartInfo.FileName = tmpFileName;p.StartInfo.Arguments = argu1 + " " + argu2 + " " + argu3;      //构造传递的入参//p.StartInfo.Verb = "RunAs";               //使用管理员权限调用(只在xp系统下有效)p.Start();p.WaitForExit();                      //等待exe程序执行结束int exCode = p.ExitCode;                  //获取exe的返回值if (exCode == -1){return false;}return true;}catch (Exception){//MessageBox.Show("更新失败!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);return false;}
}

更新程序部分

/* 更新程序部分 */
static int Main(string[] args)
{bool flagAdmin = IsAdministrator();           //获取Windows系统管理员权限(下载文件到C盘)if (!flagAdmin){MessageBox.Show("xxx升级程序无法获取系统管理员权限!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);return -1;}Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);if (args.Length != 3)                        //校验参数个数{return -1;}//MessageBox.Show("args length: " + args.Length.ToString());//for(int i=0; i<args.Length; i++)//{//    MessageBox.Show(args[i]);//}string schoolID = args[0];             //获取参数1string linkCode = args[1];              //获取参数2string yjServerURL = args[2];               //获取参数3//启动升级程序主界面//......flagAdmin = false;return 0;
}

判断程序的运行是否有Windows系统管理员权限

/* 判断当前是否具有管理员权限 */
public static bool IsAdministrator()
{WindowsIdentity current = WindowsIdentity.GetCurrent();WindowsPrincipal windowsPrincipal = new WindowsPrincipal(current);bool flag = windowsPrincipal.IsInRole(WindowsBuiltInRole.Administrator);return flag;
}

修改.NET程序的运行权限

在工程中Properties中app.manifest文件中修改下图红色区域部分level字段的值,可修改为下图蓝色框中的值。

其中,asInvoker为普通用户权限;requireAdministrator询问客户是否给予程序管理员权限,大部分软件采用此种方式;highestAvailable赋予程序超级管理员权限。

注意:当软件存在获取管理员权限操作时,装有“安全卫士”等防护软件的电脑上有可能会头弹窗提示不安全,选择“允许访问”即可。

【C#】C#客户端自动升级技术简析相关推荐

  1. 反病毒软件技术简析与探索(2009年5月18日)

    <下文是本人大三时期的一篇课外小论文,是基于大量的对杀毒软件杀毒能力的实验结果而写,请勿转载,谢谢.> 摘  要 为什么即使有杀毒软件的保护,还是有那么多的计算机系统遭到病毒的侵袭呢?答案 ...

  2. Android简易新闻客户端自动升级 简易新闻(二十)

    Android简易新闻客户端自动升级 简易新闻(二十) 关于 说明 第一步,添加引用 第二步,注册蒲公英账号 第三步,添加AndroidManifest.xml配置 初始化 最后一步 打包上传 关于 ...

  3. 喧喧 2.5 发布,新增客户端自动升级,优化界面交互性能

    喧喧是由然之协同团队推出的一款轻量级的开源企业聊天软件.提供企业内部通讯交流.企业通讯录.协同办公通讯交流.企业IM解决方案. 喧喧官网: https://xuan.im/ 更新明细 新增 客户端自动 ...

  4. 不同直播场景的CDN技术简析

    随着直播行业的兴起,各种直播应用.平台和产品万花齐放,直播场景也越来越多元化,这就对视频技术的发展提出了"日新月异"的需求.那么,目前视频直播的场景主要有哪些?不同类型的直播场景对 ...

  5. 如何使用GeneralUpdte构建客户端自动升级功能

    一.概要 本篇文章将向各位小伙伴介绍GeneralUpdate组件的使用,帮助第一次接触开发者快速上手应用在自己或企业项目中.如果本篇文章对您有帮助,希望帮忙点一下star.感谢各位开发者的支持. 帮 ...

  6. Ruby系统中的AJAX开发技术简析

    一. Ajax的简短历史 在短短几个月内,Ajax从一种十分模糊稀罕的技术一下变成最热门的 东西.本文将介绍极其容易使用的Ajax支持-作为Ruby on Rails web应用程序框架的一部分实现. ...

  7. IW4COD技术简析与不同公司游戏优化思路

    作者:零zXr0 http://hi.baidu.com/h0nker/profile 文章: http://hi.baidu.com/h0nker/blog/item/e4d9102d6d86c23 ...

  8. ORACLE11G自动维护任务简析

    ORACLE 11G 自动维护任务:   自动维护任务是一种按规则自动启动的数据库维护操作任务.比如自动收集为查询优化器使用的统计信息.自动维护任务按维护窗口自动运行.所谓自动维护窗口是按照预定义的间 ...

  9. Substrate框架:平行链及跨链技术简析 结合ETH和IPFS能否成为第一跨链系统?

    2019年1月,在DLD国际创新大会(Digital Life Design)上,有两位科技界的嘉宾接受了Wired杂志的专访,探讨的议题是"Web 3.0的巨大机遇". 其中一位 ...

最新文章

  1. reporting services 导出pdf格式优化
  2. 接口入参形式_极光小课堂|手把手教你做接口测试
  3. 深度学习学习7步骤_如何通过4个简单步骤为深度学习标记音频
  4. 重读经典:《Momentum Contrast for Unsupervised Visual Representation Learning》
  5. 图的邻接矩阵(C语言)
  6. [零基础学JAVA]Java SE应用部分-35.JAVA类集之二
  7. 庆祝自己通过系分考试,分发资料
  8. 模拟电子技术的一点心得(转)
  9. 计算机系毕业论文绪论,本科毕业论文绪论范文
  10. 佳能Canon imageCLASS MF210 Series 打印机驱动
  11. Win10环境下ubuntu安装教程
  12. 关于显示屏分辨率的问题
  13. IText_根据模板导出PDF(文字、表格、图片)
  14. 解决Ubuntu上安装chrome浏览器网页空白的问题
  15. java——char类型以及Character
  16. rk3399 debian常用软件安装
  17. 典型相关分析及R应用
  18. JAVA 删除File文件中的内容。
  19. transformers的近期工作成果综述
  20. 莫尔斯码(Morse Code)

热门文章

  1. Ubuntu_硬件与系统基础
  2. pycharm远程连接服务器,解释器已安装所需的包,导入包均红色下划线
  3. 苹果手机怎么恢复丢失的数据?果粉必看!
  4. 用PhotoshopCS3制作动画效果
  5. 13 款 Linux 实用工具推荐,个个是神器!
  6. 中国柔性制造系统(FMS)市场发展动态及未来趋势预测报告2022~2028年
  7. 这些人都在使用超级表格
  8. Simulink学习——基础建模流程案例(一)(简单弹簧阻尼器复合系统建模)
  9. Silvaco学习笔记——Save,log
  10. python bar函数