gpt4 book ai didi

c# - 调用方法时如何在 C# 代码中激活 UAC?

转载 作者:行者123 更新时间:2023-11-30 14:01:27 24 4
gpt4 key购买 nike

我有一个方法在调用时修改或保存 C:\驱动器中的文件,但如果用户没有访问权限,它会抛出异常。

如果用户允许该方法在 C:\驱动器上进行更改而不是抛出异常,如何使用 UAC 询问用户?

最佳答案

参见 this post所以。为了方便起见,我发布了部分已接受的解决方案。

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

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

您可以通过将 startInfo 对象的 Verb 属性设置为“runas”来指示新进程应该以提升的权限启动,如下所示:

startInfo.Verb = "runas";

这将导致 Windows 的行为就好像进程是从资源管理器中使用“以管理员身份运行”菜单命令启动的一样。

关于c# - 调用方法时如何在 C# 代码中激活 UAC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8123306/

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