- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
当用户从我的应用程序保存文件时,他们目前无法保存到受限位置(如 C:)。我认为这是一个很好的限制,但我想提供一个 UAC 提示来提升权限并允许用户在受限区域中保存。
我已经看到很多关于这个主题的答案,其中涉及使用“runas”生成具有提升权限的新进程。此外,这似乎可以通过模拟另一个用户来完成。据我了解,这两种方法都需要用户提供用户凭据。
我想做的基本上就是 Windows 本身所做的。当您尝试将文件复制到 Windows 7 中的 C:\时(假设您已将 UAC 设置为其默认级别),您会收到以下提示:
一旦您点击带有 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/
我有一个数据类型是 Monoid 的实例所以我可以得到很好的值(value)观组合: data R a = R String (Maybe (String → a)) instance Monoid
目标:我需要在权限非常有限的 AppDomain 中运行一些代码 - 它应该无法访问任何花哨或不安全的东西,除了少数我在别处定义的辅助方法。 我所做的:我正在创建一个具有所需基本权限的沙箱 AppDo
在我的 VPS 中,我不知道为什么,但是当我对另一个用户执行 su 时,我得到的是: root@deb64:~# su john $ 带选项卡的自动完成不起作用,甚至是命令源。示例: root@deb
我正在寻找一种方法,将二进制代码标记为“受限”,而代码是用swift编写的。 我特别要说的是,将这些标志设置到链接器以防止动态库加载: -Wl,-sectcreate,__RESTRICT,__res
这个问题在这里已经有了答案: Access restriction on class due to restriction on required library rt.jar? (15 个答案)
我正在寻找一个基于Web的JavaScript textarea编辑器,该编辑器支持诸如可选字体,文本颜色,段落对齐等标准功能。但是,有一个相当大的约束:格式应始终应用于所有文本,而不是部分文本。文本
我有以下查询: SELECT pro.* FROM tb_AutProposta pro, tb_AutParcelamento par WHERE pro.id = par.id 但是,想要将
我的问题实际上是一个逻辑问题,任务是将列表截断到 Racket 中的给定长度。也就是说,给定一个列表 (A B C),给定长度为 2,我想要一个新列表 (A B)。限制是我们有可用功能的限制列表,我将
我试图将 jQuery UI DatePicker 限制为仅当前年份,到目前为止它在 This Demo 处工作正常。 我使用以下代码来完成这项工作 $("#datepicker").datepick
我在 minikube 中启用了 podsecuritypolicy。默认情况下,它创建了两个 psp - 特权和受限。 NAME PRIV CAPS SELINUX
我使用 Google Cloud Endpoints 定义了一个简单的 API: @Api(name = "realestate", version = "v1") public class Real
我在Tableau中设计可视化,我的数据在Hive/hadoop中,数据量很大, 当我尝试设计可视化时,查询运行非常非常慢,因为每次它尝试从 hadoop 中提取数据。 所以对于任何可视化,简单的拖放
我已经在这个问题上停留了一段时间。我正在尝试访问我使用 HttpClient 和 Tomcat 7 实现的 ContainerServlet。我不断收到错误消息“Restricted(Containe
由于使用了太多的 Websphere Message Broker 实例或类似的东西,我们刚刚用完了 Linux 机器上的信号量。 我和一位同事想知道为什么这甚至是有限的 - 这只是一点内存,对吧?
我正在尝试复制 boost::variant二维矢量转化为array .使用指令 copy(vectorName.begin(), extentName); .首先我得到错误,因为矢量类型是 vari
我的数据库非常受 cpu 限制,我找不到问题的根本原因。我目前有两个应用程序服务器,每个服务器都有一个 Rails api,通过 ruby-pg gem 连接到 PostgreSQL。两个应用程序
我已经开始学习多核编程和开发并行算法。这可以通过在 Java 中使用多线程轻松完成。因此,我创建了两个包含 10 行内容的文本文件,如下所示: This is the first line in fi
Jinja 的 sandbox Zope 2 RestrictedPython 似乎解决了类似的问题。有没有办法对它们进行分层,即在 Jinja 环境中使用 RestrictedPython 策略?用
我在 Azure VNet 上有一个 HDInsight Hadoop 群集(Linux,单独部署)(使用 NSG 限制客户端 IP)。 Azure SQL 防火墙有一个名为“允许访问 Azure 服
这就是我想要做的:我想使用“_”函数以 gettext 兼容的方式为我的 zmi python 脚本启用 i18n 支持。 这是我到目前为止所做的。在我的 Zope 产品的模块中,我运行: impor
我是一名优秀的程序员,十分优秀!