c# - C#我如何要求管理员,而不是“强迫”他
问题描述
所以我基本上希望我的应用程序在第一次被拒绝的情况下重新启动而无需请求管理员权限。
编辑:
谢谢你的回答,事实证明不可能按照我想要的方式工作
解决方案
在 Windows 中,进程要么在启动时提升,要么不提升。没有回旋的余地。用户拒绝提升提示意味着该过程将根本无法启动。
因此,做到这一点的唯一方法是将您的应用程序分发为多个单独的程序,其中所有管理任务都集中在可以在单独进程中运行的附加 exe 文件中。然后,当您需要以管理员身份进行活动时,您可以使用适当的信息启动该程序。命令行参数、磁盘上的文件或通过网络或 IPC 都可以为补充程序提供任何需要的附加信息。用户将看到新流程的提示并批准或拒绝它,您可以通过让应用程序在首次成功启动时采取一些可见的操作来检测拒绝状态。
当然,您仍然希望像普通用户一样尝试尽可能多的工作。例如,遍历文件系统仍然可以作为普通用户使用;您只是看不到某些文件夹。这并不一定意味着重复代码。您可以将代码放入类库 (dll) 中,并从主(非特权)进程启动到与特权子进程相同的类库中。
推荐阅读
- asp.net-mvc - 在 azure 中安装水晶报表运行时
- iis - IIS - 尝试使用来自 webbrowser 的参数访问 DLL 文件得到 404 Not Found
- python - 加两次,结果为0
- mysql - 如何在 MySQL 中以三个一组的形式显示行
- angularjs - 为什么我收到 RangeError: Maximum call stack size exceeded 观察对父范围变量的更改(过滤的 ng-repeat 数组)?
- c# - “由于意外的数据包格式,握手失败”连接到 SFTP 服务器时出现 FluentFTP 错误
- javascript - tsconfig.json 中的“模块”:“esnext”没有删除动态延迟加载模块错误
- python - 将一个熊猫系列除以另一个并忽略索引
- ms-access - 在查询表达式中无效使用 '.', ',' '()'
- zabbix - 使用 Zabbix 网络监控验证 pdf 的内容