C# UAC自提升与用户体验
来源:互联网 发布:云计算认证考试费用 编辑:程序博客网 时间:2024/06/08 00:18
C# UAC自提升与用户体验
最近买了Wallpaper Engine玩玩,其中一个功能感觉很好,就是这个
Wallpaper Engine在启动时没有要求用户配置权限,只在必要时启动一个进程来操作一些需要管理员权限的东西。这样用户不用每次启动都配置UAC,节省了很多时间,也增加了安全性。
涉及的代码很简单,就是Process.Start
ProcessStartInfo psi = new ProcessStartInfo();psi.FileName = "test.exe";psi.Verb = "runas";psi.Arguments = "";Process.Start(psi);
需要管理员权限的操作都被放到了另外一个可执行文件里,也可以放在当前文件里通过命令行参数来选择功能。
马上实践一下,当点击Accept程序会根据用户的设置来配置系统右键菜单。
private void simpleButtonAccept_Click(object sender, EventArgs e) { bool completeFlag = true; //配置完成标志 //导入用户设置 this.BackupTools.SelectedBackupPath = this.textEditSelectedPath.EditValue as string; this.BackupTools.SavedBackupPathList = this.GetSavedPathList(); //判断是否需要配置 if ((this.BackupTools.RightClickMenuBackup != this.checkEditRcmBackup.Checked) || (this.BackupTools.RightClickMenuExportBackup != this.checkEditRcmExportBackup.Checked)) { ProcessStartInfo psi = new ProcessStartInfo(); //执行文件为当前文件 psi.FileName = Application.ExecutablePath; psi.Verb = "runas"; //设置命令行参数 string args = "Register "; if (this.checkEditRcmBackup.Checked == true) { args = args + "Backup "; } if (this.checkEditRcmExportBackup.Checked == true) { args = args + "Export "; } psi.Arguments = args; try { Process.Start(psi); this.BackupTools.RightClickMenuBackup = this.checkEditRcmBackup.Checked; this.BackupTools.RightClickMenuExportBackup = this.checkEditRcmExportBackup.Checked; } catch (Exception) { completeFlag = false; } } //刷新显示 BackupToolsForm_Load(this, null); if (completeFlag == true) { SetStatusMessage("Setting Complete"); } else { SetStatusMessage("Setting Faild"); } //保存配置 ConfigTools.Save(this.BackupTools);}
在程序启动时判断一下命令行参数
class Program { private static BackupTools BackupTools = new BackupTools(); [STAThread] static void Main(string[] args) { //获取默认配置 ConfigTools.Settings = Settings.Default; //导入配置 ConfigTools.Load(BackupTools); //若没有命令行参数就打开窗体 if (args.Length <= 0) { BackupToolsForm form = new BackupToolsForm(); form.BackupTools = BackupTools; Application.Run(form); ConfigTools.Save(BackupTools); } else { //获取参数 string switchStr = args[0].ToUpper(); List<string> pathList = new List<string>(); if (args.Length >= 2) { for (int i = 1; i < args.Length; i++) { pathList.Add(args[i]); } } if (switchStr.Equals("BackupFile".ToUpper())) { BackupTools.BackupFile(pathList[0]); } else if (switchStr.Equals("BackupFolder".ToUpper())) { BackupTools.BackupFolder(pathList[0]); } else if (switchStr.Equals("Export".ToUpper())) { BackupTools.OpenSavedFolder(pathList[0]); } else if (switchStr.Equals("Register".ToUpper())) { //根据参数注册到右键菜单 BackupTools.DeregisterToRightMenu(); foreach (string str in pathList) { if (str.ToUpper().Equals("Backup".ToUpper())) { BackupTools.RegisterBackupToRightclickMenu(); } else if (str.ToUpper().Equals("Export".ToUpper())) { BackupTools.RegisterExportBackupToRightClickMenu(); } } } } }}
阅读全文
0 0
- C# UAC自提升与用户体验
- paip.提升用户体验与提升安全性----记住密码
- 提升用户体验
- paip.提升用户体验----c++ c# 配色方案
- paip.提升用户体验----记住用户名与自动登录
- paip.提升用户体验---验证码识别与盲人
- paip.提升用户体验与安全性---注册流程总结
- paip.提升用户体验与安全性----cookie盗用检测
- 提升用户体验---自动邮编提示与验证地址
- Atitit 提升用户体验 生物识别 与登录 身份验证
- Android硬件加速提升用户体验
- 如何提升网站用户体验?
- 使用RxJava 提升用户体验
- 利用TouchDelegate提升用户体验
- 利用TouchDelegate提升用户体验
- 利用TouchDelegate提升用户体验
- paip.提升用户体验-----用户注册设计
- win7下的UAC机制与提升管理员权限
- Java多线程--同步计数器CountDownLatch
- 在Eclipse环境下配置Firefox浏览器
- 搜狗2016研发工程师笔试题
- 算法 第四版 1.4.18
- python requests json data区别
- C# UAC自提升与用户体验
- 【SQL Server学习笔记】7:SELECT数据查询功能的常见扩展
- 软件开发各阶段交付物列表
- Rightmost Digit HDU
- 用C++Vector和Queue解决循环报数淘汰问题
- android:roundIcon="@mipmap/logo_yuan"
- Java多线程--同步屏障CyclicBarrier
- python
- python 第三方库安装技巧