此问题适用于Windows Vista!
我有一个应用程序,它通常在没有管理权限的情况下工作.有一个活动确实需要管理权限,但我不想用更高的权限启动应用程序本身,因为我知道大多数时候用户甚至不会使用该功能.
我正在考虑某种方法,通过这种方法,我可以在某些事件(例如按下按钮)上提升应用程序的权限.例子:
如果用户单击此按钮,则会提示用户UAC对话或同意.我该怎么做?
此问题适用于Windows Vista!
我有一个应用程序,它通常在没有管理权限的情况下工作.有一个活动确实需要管理权限,但我不想用更高的权限启动应用程序本身,因为我知道大多数时候用户甚至不会使用该功能.
我正在考虑某种方法,通过这种方法,我可以在某些事件(例如按下按钮)上提升应用程序的权限.例子:
如果用户单击此按钮,则会提示用户UAC对话或同意.我该怎么做?
我认为提升当前运行的进程是不可能的.据我所知,Windows Vista内置了在启动时给予进程管理员权限.如果您查看使用UAC的各种程序,您应该会看到,每次需要执行管理操作时,它们实际上都会启动一个单独的进程(任务管理器是一个,Paint.NET是另一个,后者实际上是一个.NET应用程序).
这个问题的典型解决方案是在启动提升的进程时指定命令行参数(abatishchev的建议是这样做的一种方法),这样启动的进程只知道显示某个对话框,然后在该操作完成后退出.因此,用户几乎不应该注意到一个新进程已经启动,然后退出,而更愿意显示为同一应用程序中的一个新对话框已经打开(尤其是如果你进行了一些黑客攻击,使提升进程的主窗口成为父进程的子进程).如果提升访问不需要UI,那就更好了.
在Vista中,我们将对UAC进行全面的讨论,我建议您在这个主题上看到this very through article个(代码示例是C++),但我怀疑您无论如何都需要使用WiAPI和P/Unjk来完成C语言中的大部分内容.希望你现在至少看到了正确的方法,尽管设计一个符合UAC的程序绝非小事...