gpt4 book ai didi

c# - 如何使用 C# 显示文件保存到受限位置的 UAC 提示?

转载 作者:太空狗 更新时间:2023-10-29 18:23:03 25 4
gpt4 key购买 nike

当用户从我的应用程序保存文件时,他们目前无法保存到受限位置(如 C:)。我认为这是一个很好的限制,但我想提供一个 UAC 提示来提升权限并允许用户在受限区域中保存。

我已经看到很多关于这个主题的答案,其中涉及使用“runas”生成具有提升权限的新进程。此外,这似乎可以通过模拟另一个用户来完成。据我了解,这两种方法都需要用户提供用户凭据。

我想做的基本上就是 Windows 本身所做的。当您尝试将文件复制到 Windows 7 中的 C:\时(假设您已将 UAC 设置为其默认级别),您会收到以下提示:

UAC Prompt

一旦您点击带有 UAC 盾牌的“继续”按钮,文件就会被复制到 C:\,并且不会提示您输入凭据(假设您以管理员权限登录)。

如何在管理员用户的应用程序中复制此行为?他们不必冒充任何其他用户,因为他们已经拥有管理员权限。任何人都可以提供有关 Windows 在此过程中正在做什么的详细信息吗?他们是否生成了一个具有提升权限的新 explorer.exe 进程?

最佳答案

您需要做 Windows 所做的事情。并生成一个将以提升的权限运行的新进程。这里没有捷径。进程启动时分配的 token 决定了进程拥有哪些权限。该 token 在进程启动后无法更改。如果你需要提升,你需要一个新的过程。

I've seen lots of answers around this topic that involve spawning a new process with elevated privileges using 'runas'. Also, it seems like this can be done by impersonating another user. From what I understand, both of those methods require a user to provide user credentials.

不,事实并非如此。如果当前用户不是管理员,则 UAC 对话框将提示输入具有管理员权限的用户的新凭据。那是越肩 UAC 对话框。另一方面,如果当前用户是管理员,则他们只会看到同意 对话框。这是显示在安全桌面上的对话框,只要求您单击“继续”。

Windows 组件可以做而您不能做的一件事是在不向您显示同意对话框的情况下启动提升的进程。这仅发生在 Windows 7 上(而不是在 Vista 上),并且只有当您在 Windows 7 中添加的新默认设置中具有 UAC 设置时才会发生这种情况。这就是资源管理器能够显示对话框的方式包含在问题中,然后启动一个提升的过程来进行复制而不显示同意 UAC 对话框。只有 Windows 组件被授予该能力。

但最重要的是,您需要启动一个提升运行的新进程。使用 runas 动词是执行此操作的规范方法。

关于c# - 如何使用 C# 显示文件保存到受限位置的 UAC 提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10743396/

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