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

这篇具有很好参考价值的文章主要介绍了WinForm实现管理员权限运行的三种方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

来源:https://mp.weixin.qq.com/s/ydBWABy7kwOWxNCQu4qYMA

 

在visual studio开发winform程序,生成msi安装包以后,代码运行似乎没有问题。但是,若是软件安装到了C盘,软件在执行某些操作,比如写文件、读文件等操作时,有可能会因为操作系统用户权限不足导致读写不成功。关键这时候软件还不报错,可能很难发现原因。

这个问题,作为普通用户,可以考虑鼠标右键软件选择“以管理员权限运行”,就可以临时解决这个问题了。但是这个办法怎么看都挺不合适,为难用户了。

查了一下资料,于是就有了下面的解决办法记录。

方法一、采用Process.Start方法

思路很简单,就是在Program.cs入口处判断当前是不是管理员权限,如果是,则不做其他处理,如果不是,改成管理员权限。具体代码如下。修改Main方法:

 1 /// <summary>
 2 /// 应用程序的主入口点。
 3 /// </summary>
 4 [STAThread]
 5 static void Main()
 6 {
 7     Application.EnableVisualStyles();
 8     Application.SetCompatibleTextRenderingDefault(false);
 9 
10     //获得当前登录的Windows用户标示
11     WindowsIdentity identity = WindowsIdentity.GetCurrent();
12     WindowsPrincipal principal = new WindowsPrincipal(identity);
13     //判断当前登录用户是否为管理员
14     if (principal.IsInRole(WindowsBuiltInRole.Administrator))
15     {
16         //如果是管理员,则直接运行
17         Application.Run(new FrmMain());
18     }
19     else
20     {
21         //创建启动对象
22         ProcessStartInfo startInfo = new ProcessStartInfo();
23         startInfo.UseShellExecute = true;
24         startInfo.WorkingDirectory = Environment.CurrentDirectory;
25         startInfo.FileName = Application.ExecutablePath;
26         //设置启动动作,确保以管理员身份运行
27         startInfo.Verb = "runas";
28         try
29         {
30             Process.Start(startInfo);
31         }
32         catch
33         {
34             return;
35         }
36         //退出
37         Application.Exit();
38     }
39 }

 

方法二、直接修改exe属性

这个方法,其实还是让用户来操作,只是避免了每次启动软件都要做而已。具体操作:右击exe程序文件,在弹出的属性对话框中,兼容性选项中,勾选“以管理员身份运行此程序”即可。

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

 

方法三、添加应用程序清单文件

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

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

 添加完成后,打开app.manifest文件,将:

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

修改为:

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

于是,在生成安装包以后,正常安装使用软件,软件也可以用管理员权限读写文件了。文章来源地址https://www.toymoban.com/news/detail-760191.html

到了这里,关于WinForm实现管理员权限运行的三种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • unity 以管理员权限运行 与 无法读取D3DCompiler DLL文件 解决方案

    在unity hub下载后,用编辑器无法打开项目,可能出现的问题。   Unity 以管理员权限运行,这不受支持。Unity在您的项目中执行脚本和二进制库,这些脚本和二进制库可能来自第三方来源,并可能对您的计算机有害。Unity 还可以执行仍在开发中且尚未完全测试的脚本和二进制库

    2024年04月13日
    浏览(49)
  • C#实现软件开机自启动(不需要管理员权限)

    目录 原理简介 使用方法 完整代码 本文参考C#/WPF/WinForm/程序实现软件开机自动启动的两种常用方法,将里面中的第一种方法做了封装成 AutoStart 类,使用时直接两三行代码就可以搞定。 自启动的原理是 将软件的快捷方式创建到计算机的自动启动目录下(不需要管理员权限)

    2024年02月11日
    浏览(54)
  • 实现以管理员权限打开window终端cmd,并在终端里执行多条指令的功能

    本文实现以管理员权限打开window终端cmd,并在终端里执行多条指令的功能。 以挂载vhd虚拟盘、卸载vhd虚拟盘为例。 一、挂载vhd虚拟盘 C#工程 vhdAttach, 生成vhdAttach.exe,vhdAttach.exe的功能为:启动windows终端cmd.exe,读取attach-vhd.txt中的内容,并在终端里执行attach-vhd.txt中的多条指令

    2024年02月10日
    浏览(56)
  • win11设置管理员权限

     

    2024年02月14日
    浏览(62)
  • 强大的bat病毒(拿管理员权限)

    2024年02月04日
    浏览(59)
  • git bash开通默认管理员权限

    问题: 配置好git ssh的key连接后 运行 报错 后来发现是没有在管理员权限下打开git bash 但是管理员权限只能去快捷方式里右键打开 但是希望在文件夹里右键自带的git bash也能带管理员权限,只需要找到git安装路径下的git-bash.exe 就可以了,其他应用都同理。

    2024年02月08日
    浏览(52)
  • windows脚本获取管理员权限修改host

    很多时候我们常常需要通过管理员权限执行脚本,脚本可能涉及到一些受保护信息的访问,我们写个简单的脚本来更改host文件,host文件就是需要管理员权限才能访问的启动脚本时先检查是否有管理员权限,如果没有就调用授权脚本进行管理员授权打开,给用户弹出需要管理

    2024年02月14日
    浏览(44)
  • Linux 进入和退出root管理员权限

    在Linux系统中,进入和退出root管理员权限是进行系统管理和执行敏感操作的重要过程。通过使用 su - root 和 su - 用户名 命令,我们可以在终端中切换到root用户或其他普通用户,以获取相应的权限。下面将详细介绍这两个命令的使用。 1.打开终端:首先,打开终端应用程序;

    2024年02月07日
    浏览(63)
  • 【以太坊 Solidity】管理员读写权限/访问控制/角色控制

    在 Solidity 语言的多继承中,若 多个合约 共同继承一个 父合约 ,则这 多个合约 共享 父合约 中的变量和函数。 合约继承路线如下: 1.1 权限管理合约 1.2 继承权限管理合约的基类合约 1.3 待测试的合约 2.1 正向测试:合约拥有者OWNER具有管理员权限 此时 合约 Authority 中的 构造

    2024年02月04日
    浏览(63)
  • Linux系统添加用户并授权管理员(sudo)权限

    一方面是为了安全权限考虑、也是防止误操作。另一方面也是为了保证用户平时处于普通权限下。 1、添加用户 使用useradd命令添加用户 useradd -m kingbase 2、修改密码 给新添加的用户“kingbase”设置一个密码( 注:设置密码的时候linux系统默认会有密码复杂度规则 ) passwd king

    2024年02月16日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包