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

2023-11-22

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

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

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

UAC Prompt

单击带有 UAC 防护罩的“继续”按钮后,文件将被复制到 C:\,并且不会提示输入凭据(假设您以管理员权限登录)。

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


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

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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 扩展 Object.prototype JavaScript

    我不是在问这是否可以 Object prototype method function 这被视为evil几乎每个人都考虑到它搞砸了for var i in obj 真正的问题 Ignoring 不合格的浏览器 不支持的浏览器Object d
  • 如何在装饰器中使用命名参数?

    如果我有以下功能 def intercept func do something here intercept arg1 20 def whatever arg1 arg2 do something here 我希望拦截仅在以下情况下启动a
  • 如何设置从浏览器下载的文件的名称?

    我正在编写一个 Web 应用程序 除其他外 它允许用户将文件上传到我的服务器 为了防止名称冲突并组织文件 我将它们放在服务器上后对其进行重命名 通过跟踪原始文件名 我可以与文件所有者进行通信 而他们却不知道我在后端更改了文件名 也就是说 直
  • 如何使用 jQuery 更改 CKEditor 文本?

    我有一个带有 CKEditor bbCode 插件 的文本区域
  • JBoss AS 7 的部署内容在哪里

    我是 JBoss AS 7 的新手 我尝试在 JBoss AS 7 上部署我的 war 文件 看起来工作正常 我的问题是在哪里可以看到部署的内容 我希望它像 Tomcat 一样 它应该有一个探索的 war 文件夹 用于保存部署的内容 JBo
  • 用于返回计算机上 .NET Framework 版本的 PowerShell 脚本?

    返回计算机上 NET Framework 版本的 PowerShell 脚本是什么 我的第一个猜测是涉及 WMI 的东西 还有更好的吗 它应该是一行 为每次 NET 安装 在每一行 仅返回最新版本 如果您要使用注册表 则必须递归才能获取 4
  • 带有绑定参数的 MarkupExtension

    我正在定制MarkupExtension其中我需要来自 XAML 的非字符串参数来构造新对象 是否可以在字段上使用非字符串参数绑定DataContext scope 换句话说 我怎样才能做这样的事情呢
  • What(): std::bad_alloc - 我内存不足了吗?

    我的数据集 960 个维度的 500 000 个点 文件大小为 1 9 GB 1 922 000 000 字节 该代码适用于较小的数据集 但为此它每次都会在同一点崩溃 这是一个最小的例子 include
  • 如何使用js或jquery在html中捕获屏幕截图[重复]

    这个问题在这里已经有答案了 我需要我的客户能够使用如下按钮捕获我网站任何页面的屏幕截图
  • Scikit-learn 多线程

    您知道 scikit learn 中的模型是否使用自动多线程或仅使用顺序指令吗 Thanks 不会 默认情况下 所有 scikit learn 估计器仅在单个线程上工作 但话又说回来 这一切都取决于算法和问题 如果算法需要顺序数据 我们就无
  • 使用 AFNetworking POST jpeg 上传

    我一生都无法弄清楚为什么当我使用 AFNetworking 时这不起作用 它与 ASIHTTP 一起工作 这对我来说都是很新鲜的 但我不明白为什么文件不再从 FILES 传输到服务器的硬盘 这是 iOS 代码 IBAction upload
  • Erlang 有 Sinatra 风格的 Web 框架吗?

    我用 Ruby 和 Rails 编程了很长一段时间 然后我爱上了 Sinatra 框架的简单性 它允许我构建一页 Web 应用程序 Erlang 有像 Sinatra 这样的 Web 框架吗 我尝试了 Erlyweb 但它似乎太重量级了 您
  • Swift JSON 错误,无法将类型“__NSArrayM”(0x507b58)的值转换为“NSDictionary”(0x507d74)

    我正在尝试从 url json 文件 获取数据 但在这些行上收到此错误 var jsonResult NSJSONSerialization JSONObjectWithData data options NSJSONReadingOpti
  • C 语言中在“printf”之后使用“fgets”的问题,因为“fgets”在“printf”之前运行[重复]

    这个问题在这里已经有答案了 可能的重复 为什么 printf 在调用后不会刷新 除非格式字符串中有换行符 在C中 我使用时遇到问题printf and fgets就像我的代码中一样printf写得早于 fget 但它不运行 它运行在 fge
  • :除了不在应用程序控制器的 before_filter 中工作。路由问题?

    我的应用程序控制器中有一个 before filter 来保持用户的会话处于活动状态 如果达到超时则将其注销 这应该在除 sessions new 和 sessions destroy 之外的每个操作上调用 它们被路由为 login 和 l
  • 实体框架 - 如何从元数据获取数据库列数据类型

    有没有办法在给定表的 EntityType 的情况下获取数据库列 DataType 长度信息 您可以运行示例 SQL SQL Server 以准确查看我正在查找的信息 select sys tables name as Table Name
  • 使用端口 443 将 iOS 应用程序上传到 AppStore

    我正在尝试使用 altool 从命令行上传我们的应用程序 由于我们的防火墙阻止了某些端口 因此我想在端口 443 上使用 HTTPS 以 DAV 模式传输文件 如果我使用 ApplicationLoader GUI 手动执行此操作 我可以为
  • 一个圆可以塞进多少个正方形?

    多少个正方形的大小a a可以打包成一个半径为圆的圆R 我不需要解决方案 我只需要某种起始想法 我很抱歉写了这么长的答案 我的方法是从理论上的最大值和保证的最小值开始 当您解决问题时 您可以使用这些值来确定您使用的算法有多好 如果您能想到更好
  • Bootstrap表默认排序

    我使用引导表 第一列有默认排序 如何更改默认列并选择另一个并使用 升序 降序 您可以在表中使用 data sort name 和 data sort order 例如 table 文档在这里http bootstrap table wenz
  • 如何使用 C# 显示文件保存到受限位置的 UAC 提示?

    当用户从我的应用程序保存文件时 他们当前无法保存到受限位置 例如 C 我认为这是一个很好的限制 但我想提供一个 UAC 提示来提升权限并允许用户在受限区域中保存 我已经看到了很多围绕这个主题的答案 其中涉及使用 runas 生成具有提升权限