首页 > 解决方案 > C#我如何要求管理员,而不是“强迫”他

问题描述

所以我基本上希望我的应用程序在第一次被拒绝的情况下重新启动而无需请求管理员权限。

编辑:

谢谢你的回答,事实证明不可能按照我想要的方式工作

标签: c#

解决方案


在 Windows 中,进程要么在启动时提升,要么不提升。没有回旋的余地。用户拒绝提升提示意味着该过程将根本无法启动。

因此,做到这一点的唯一方法是将您的应用程序分发为多个单独的程序,其中所有管理任务都集中在可以在单独进程中运行的附加 exe 文件中。然后,当您需要以管理员身份进行活动时,您可以使用适当的信息启动该程序。命令行参数、磁盘上的文件或通过网络或 IPC 都可以为补充程序提供任何需要的附加信息。用户将看到新流程的提示并批准或拒绝它,您可以通过让应用程序在首次成功启动时采取一些可见的操作来检测拒绝状态。

当然,您仍然希望像普通用户一样尝试尽可能多的工作。例如,遍历文件系统仍然可以作为普通用户使用;您只是看不到某些文件夹。这并不一定意味着重复代码。您可以将代码放入类库 (dll) 中,并从主(非特权)进程启动到与特权子进程相同的类库中。


推荐阅读