加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、容器安全、数据加密、云日志、云数据迁移!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

C#默认以管理员身份运行程序实现代码分享

发布时间:2023-06-09 16:00:11 所属栏目:语言 来源:转载
导读:   上篇博客写了一下如何通过网络时间更新系统时间,当时写的时候怎么测试都不成功,后来想想是不是我操作系统(当时是在win8上开发的)的问题。当时我猜应该是权限不够,导致无法修改系统时
  上篇博客写了一下如何通过网络时间更新系统时间,当时写的时候怎么测试都不成功,后来想想是不是我操作系统(当时是在win8上开发的)的问题。当时我猜应该是权限不够,导致无法修改系统时间,于是我以管理员身份运行了一次,结果测试成功!原来真的是权限的问题,于是就在程序里面加入了默认以管理员身份运行的代码。下面让我们看看是怎么实现的吧!
 
  程序默认以管理员身份运行
 
  代码如下:
 
  static void Main(string[] Args)
 
  {
 
  /**
 
  * 当前用户是管理员的时候,直接启动应用程序
 
  * 如果不是管理员,则使用启动对象启动程序,以确保使用管理员身份运行
 
  */
 
  //获得当前登录的Windows用户标示
 
  System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
 
  //创建Windows用户主题
 
  Application.EnableVisualStyles();
 
  System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity);
 
  //判断当前登录用户是否为管理员
 
  if (principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator))
 
  {
 
  //如果是管理员,则直接运行
 
  Application.EnableVisualStyles();
 
  Application.Run(new Form1());
 
  }
 
  else
 
  {
 
  //创建启动对象
 
  System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
 
  //设置运行文件
 
  startInfo.FileName = System.Windows.Forms.Application.ExecutablePath;
 
  //设置启动参数
 
  startInfo.Arguments = String.Join(" ", Args);
 
  //设置启动动作,确保以管理员身份运行
 
  startInfo.Verb = "runas";
 
  //如果不是管理员,则启动UAC
 
  System.Diagnostics.Process.Start(startInfo);
 
  //退出
 
  System.Windows.Forms.Application.Exit();
 
  }
 
  }
 
  打开程序集里的Program.cs文件,并将其中Main方法中的代码替换为以上代码即可实现程序默认以管理员身份运行。
 
  这篇博客本来早就应该发表的,可是由于网络等各种原因,一直到了现在才得以发表,网络问题很快就会得到解决,到时会继续恢复到每周一篇的更新频率,希望大家继续关注。
 

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章