运行记事本时,我可以拖放文件将其打开,但无法保存文件。当我运行记事本提升以保存文件时,我无法再拖放以打开文件。
我了解将文件从非提升程序拖动到提升程序存在安全风险;但是,当我也运行提升的资源管理器时,我仍然无法拖放到提升的记事本。
为什么操作系统不允许两个提升的程序通过拖放交换信息?我正在认真考虑重新使用 Windows Server 2003。
编辑:似乎两个提升的程序可以交换信息;explorer 只是未能提升。提升资源管理器后,可以将文件从资源管理器拖动到提升的记事本。
运行记事本时,我可以拖放文件将其打开,但无法保存文件。当我运行记事本提升以保存文件时,我无法再拖放以打开文件。
我了解将文件从非提升程序拖动到提升程序存在安全风险;但是,当我也运行提升的资源管理器时,我仍然无法拖放到提升的记事本。
为什么操作系统不允许两个提升的程序通过拖放交换信息?我正在认真考虑重新使用 Windows Server 2003。
编辑:似乎两个提升的程序可以交换信息;explorer 只是未能提升。提升资源管理器后,可以将文件从资源管理器拖动到提升的记事本。
无法从资源管理器“拖放”到提升的记事本窗口是用户界面权限隔离 ( UIPI ) 功能的体现。它在操作系统中是为了防止特权较低的应用程序向另一个特权较高的应用程序发送任意“消息”(在操作系统/应用程序进程间通信的意义上)。如果较高权限的应用程序处理消息不正确,则较低权限的应用程序可能会导致较高权限的应用程序代表它执行任意代码(这些类型的攻击称为粉碎攻击,因此在2002 年的论文描述了当时 Windows 版本中的攻击方法)。
您可以将其想象为在以较低“完整性级别”(非特权)运行的应用程序和具有较高完整性级别(提升)的应用程序之间的“防火墙”。
如果您真的想要提升的 Windows 资源管理器,请执行以下操作:
资源管理器将重新打开提升。
如果您不想禁用 UAC,可以尝试禁用 UIPI(用户界面特权隔离)。
打开注册表并转到:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
添加一个新的
DWORD (32-bit) Value
被叫EnableUIPI
并将其设置为0
.重新启动机器,看看它的行为是否符合您的要求。
这是 Vista 上的一个问题,我猜它也可以用于服务器 2008。基本上你不能提升资源管理器。您可以获得执行此操作的安全选项,并且当您这样做时它似乎已经起作用,但实际上您仍然会得到一个标准(非提升)资源管理器窗口,因此您遇到了问题。
我过去不得不使用的解决方法包括在提升的记事本会话中使用另存为资源管理器窗口,因为这也是提升的,或者使用提升的命令提示符来创建文件,但这些都不能修复你的拖动和明显放弃问题。这是一个非常糟糕的错误,已经有一段时间了,我不知道他们为什么不修复它,以便您可以运行资源管理器的提升实例。
我认为问题在于,当您以管理员身份运行程序时,它们仍然与所有其他程序在同一个窗口站中运行。Explorer 将只允许在任何窗口站(即 explorer.exe 的一个实例)中运行一次,因此您无法运行 Explorer 的提升副本。
人们倾向于抱怨用户访问控制的侵入性方面,但安全总是要付出代价的。我必须承认我在很少登录的服务器上关闭了 UAC,因为我相信自己不会做任何愚蠢的事情。我确实为终端服务器保留了 UAC,我很乐意忍受这带来的一些小麻烦。
JR
我猜我会说负责编组拖放所需细节的代码与 UI 的其余部分(包括资源管理器)一起在未提升的上下文中运行,因此它无法访问两个进程之间的管道信息。
编辑配置数据库中的副本,然后将新版本复制到您的主机,覆盖旧版本(或者如果可以的话,让配置数据库为您完成所有工作);)
或者,如果您不想提升资源管理器,则直接从提升的记事本打开文件。
编辑系统文件不应该是点击、拖放的事情——至少不是像我看到的那样。此外,为管理会话禁用 UAC 也没有太大问题,无论如何您都应该只在服务器上进行管理工作(没有终端服务器或其他),那么当您唯一想做的事情需要以任何方式提升时,为什么还要打扰 UAC?
UAC 并不是真正的安全边界,因为应用程序有多种方法可以绕过它。这就是为什么您通常应该以具有正常权限的标准用户身份运行,在不提供额外凭据的情况下无法进行提升 - 就像在引入 UAC 之前一样。
在我看来,UAC 引入了一个更友好的带有一些智能的 runas 对话框,它不应该用于以管理员身份运行并对此感到安全。