翼度科技»论坛 编程开发 .net 查看内容

WinForm实现管理员权限运行的三种方式

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
来源:https://mp.weixin.qq.com/s/ydBWABy7kwOWxNCQu4qYMA
 
在visual studio开发winform程序,生成msi安装包以后,代码运行似乎没有问题。但是,若是软件安装到了C盘,软件在执行某些操作,比如写文件、读文件等操作时,有可能会因为操作系统用户权限不足导致读写不成功。关键这时候软件还不报错,可能很难发现原因。
这个问题,作为普通用户,可以考虑鼠标右键软件选择“以管理员权限运行”,就可以临时解决这个问题了。但是这个办法怎么看都挺不合适,为难用户了。
查了一下资料,于是就有了下面的解决办法记录。
方法一、采用Process.Start方法
思路很简单,就是在Program.cs入口处判断当前是不是管理员权限,如果是,则不做其他处理,如果不是,改成管理员权限。具体代码如下。修改Main方法:
  1. 1 /// <summary>
  2. 2 /// 应用程序的主入口点。
  3. 3 /// </summary>
  4. 4 [STAThread]
  5. 5 static void Main()
  6. 6 {
  7. 7     Application.EnableVisualStyles();
  8. 8     Application.SetCompatibleTextRenderingDefault(false);
  9. 9
  10. 10     //获得当前登录的Windows用户标示
  11. 11     WindowsIdentity identity = WindowsIdentity.GetCurrent();
  12. 12     WindowsPrincipal principal = new WindowsPrincipal(identity);
  13. 13     //判断当前登录用户是否为管理员
  14. 14     if (principal.IsInRole(WindowsBuiltInRole.Administrator))
  15. 15     {
  16. 16         //如果是管理员,则直接运行
  17. 17         Application.Run(new FrmMain());
  18. 18     }
  19. 19     else
  20. 20     {
  21. 21         //创建启动对象
  22. 22         ProcessStartInfo startInfo = new ProcessStartInfo();
  23. 23         startInfo.UseShellExecute = true;
  24. 24         startInfo.WorkingDirectory = Environment.CurrentDirectory;
  25. 25         startInfo.FileName = Application.ExecutablePath;
  26. 26         //设置启动动作,确保以管理员身份运行
  27. 27         startInfo.Verb = "runas";
  28. 28         try
  29. 29         {
  30. 30             Process.Start(startInfo);
  31. 31         }
  32. 32         catch
  33. 33         {
  34. 34             return;
  35. 35         }
  36. 36         //退出
  37. 37         Application.Exit();
  38. 38     }
  39. 39 }
复制代码
 
方法二、直接修改exe属性
这个方法,其实还是让用户来操作,只是避免了每次启动软件都要做而已。具体操作:右击exe程序文件,在弹出的属性对话框中,兼容性选项中,勾选“以管理员身份运行此程序”即可。

 
方法三、添加应用程序清单文件
这种方法比较简单。在vs的解决方案资源管理器点击项目,右击添加,新建项,选择应用程序清单列表。

 添加完成后,打开app.manifest文件,将:
  1. [/code]修改为:
  2. [code]
复制代码
于是,在生成安装包以后,正常安装使用软件,软件也可以用管理员权限读写文件了。

来源:https://www.cnblogs.com/huashanqingzhu/archive/2023/12/17/17908934.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具