【发布时间】:2014-10-02 19:25:51
【问题描述】:
我知道您可以创建一个清单文件来指定整个应用程序的访问级别管理员。但是是否可以只对特定形式要求它?
【问题讨论】:
我知道您可以创建一个清单文件来指定整个应用程序的访问级别管理员。但是是否可以只对特定形式要求它?
【问题讨论】:
高程是流程的属性。您的所有表单都在同一个过程中执行。问如何在同一个进程中以不同的权限执行不同的表单是没有意义的。那是毫无意义的。
因此,如果您需要应用程序的一部分在没有提升的情况下运行,而其中的一部分在提升的情况下运行,那么您需要两个进程。别无选择。
不过,实现此目的的干净方法是安排应用程序的提升部分通过进程外 COM 服务器可用。这样您就可以使用COM Elevation Moniker 来提升您应用的这一部分。
【讨论】:
This code allows you to test if a user is admin.您需要在创建您希望限制的表单窗口时调用此代码。
【讨论】:
不确定是否存在类似的东西。我通过重新启动应用程序手动完成了类似的操作。
在没有管理员权限的情况下启动您的应用程序。当用户执行需要管理员访问权限的操作时,查看应用程序是否以管理员身份运行(不会,因为我们正常启动)?如果否,保存程序状态并使用verb = "runas" 和commdandline 指示要采取的操作重新启动应用程序。
当应用程序重新启动时,假设用户已通过 UAC 提供了管理员访问权限。处理命令行,恢复保存的程序状态并将用户导航到他离开的地方。
【讨论】:
看看这个示例UAC self-elevation
此示例演示如何检查当前进程的权限级别,以及如何通过同意 UI 明确同意来自行提升进程。
【讨论】: