gpt4 book ai didi

c# - 如何仅在需要时提升权限?

转载 作者:IT王子 更新时间:2023-10-29 03:38:38 25 4
gpt4 key购买 nike

此问题适用于 Windows Vista!

我有一个在没有管理权限的情况下正常工作的应用程序。有一项事件确实需要管理权限,但我不想以更高的权限启动应用程序本身,因为我知道大多数时候用户甚至不会使用该功能。

我正在考虑某种方法,通过它我可以在某些事件(例如按下按钮)上提升应用程序的权限。示例:

如果用户单击此按钮,则会提示他使用 UAC 对话框或同意。我该怎么做?

最佳答案

我不认为可以提升当前正在运行的进程。据我了解,Windows Vista 内置了在启动时将管理员权限授予进程的功能。如果您查看使用 UAC 的各种程序,您应该看到它们实际上在每次需要执行管理操作时启动一个单独的进程(任务管理器是一个,Paint.NET 是另一个,后者实际上是一个 .NET 应用程序).

这个问题的典型解决方案是在启动提升的进程时指定命令行参数(abatishchev 的建议是这样做的一种方法),以便启动的进程只知道显示某个对话框,然后在此之后退出 Action 已经完成。因此,用户几乎不会注意到一个新进程已经启动然后退出,而宁愿出现好像在同一个应用程序中打开了一个新对话框(特别是如果你有一些 hackery 来制作主窗口提升的进程是父进程的子进程)。如果您不需要 UI 来提升访问权限,那就更好了。

有关 Vista 上 UAC 的完整讨论,我建议您查看 this very through article关于这个主题(代码示例在 C++ 中,但我怀疑您无论如何都需要使用 WinAPI 和 P/Invoke 来完成 C# 中的大部分事情)。希望您现在至少看到了正确的方法,尽管设计一个符合 UAC 的程序绝非易事...

关于c# - 如何仅在需要时提升权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/573086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com