C# 实现winform软件最小化到系统托盘,开机自启动
问题描述
用户的电脑是win7系统,应用系统在用户电脑上运行时部分功能需要访问注册表,但是使用这些功能时会提示用户没有权限访问注册表。
原因分析
win7及后续高版本系统对用户的权限控制比较严,就算用户的权限较高,但用户启动程序时默认还是以普通用户的权限启动,因此造成应用程序访问操作系统相关功能时受限。可以启动应用程序时选择已管理员身份运行,但是这样用户每次启动程序都不方便,而且有些用户也没有管理员权限。最好是应用系统启动时已用户的最大权限运行。
解决方案
C#编写的WinForm程序可以通过配置文件方式设置程序启动时的运行权限。具体步骤如下:
1.在Visual Studio解决方案资源管理器中的项目上点右键,选择添加->新建项。
在这里插入图片描述
2.在添加新项窗口中选择应用程序清单文件,然后点击添加按钮。
在这里插入图片描述
3.在项目中会新增一个app.manifest文件,双击打开改文件,其实是一个xml文件。其中的requestedExecutionLevel标签用于设置程序启动时的 运行权限,其值主要包括以下三个(参考文献中介绍的更为详细,可以查看参考文献1了解更多内容):
asInvoker:可以理解为以普通用户身份运行,详细的介绍请见参考文献1;
requireAdministrator:程序启动时需要当前用户具有管理员权限;
highestAvailable:以当前用户具有的最大权限运行。
在这里插入图片描述
在这里插入图片描述
程序默认设置的为asInvoker,为了让用户能访问操作系统相关功能,可以将requestedExecutionLevel值设置为highestAvailable,这样应用系统就能以当前用户最大的权限运行了。
参考文献:
[1]应用程序清单 Manifest 中各种 UAC 权限级别的含义和效果,https://walterlv.blog.csdn.net/article/details/89631840
————————————————
版权声明:本文为CSDN博主「gc_2299」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/gc_2299/article/details/110503703