如果我以管理员身份运行 Notepad++,则我无法将文件从资源管理器拖到它上面(它们会被“停止”光标拒绝),如果我尝试使用资源管理器扩展右键单击“使用 Notepad++ 编辑”,它会引发错误。
使用 Notepad++“打开”对话框打开文件,甚至在资源管理器中双击它们都可以正常工作。(请注意,双击不是解决方案,因为我想要打开的文件很少默认为 Notepad++)
我已将 UAC 设置为“从不通知”。
使用禁用 UAC‘管理员批准模式’的黑客技术可以解决问题,但会丧失使用 Metro 应用的能力。
答案1
完整性较低的进程无法将消息传递给完整性较高的进程。
您会发现,自 Windows Vista 开始,任何提升的进程都是这种情况。
进程在特定的安全访问令牌和完整性级别下运行。Explorer 在您用户帐户的受限令牌下以中等完整性级别运行,当您通过以管理员身份运行来提升进程时,它将使用具有高完整性级别的其他不受限制的安全令牌。
Vista 带来的安全改进包括用户界面权限隔离,这可以防止较低级别的进程向较高级别的进程发送消息(因为这些消息可能是恶意的,例如在粉碎攻击的情况下)。
因此在这种情况下,Windows 将不允许 Explorer 将拖放消息发送到 Notepad++(它实际上返回“成功”但删除了消息)。
有关访问令牌、完整性级别和 UIPI 的详细信息,请参阅Windows 完整性机制设计。
答案2
Louis 解释了为什么不能从非管理员模式的资源管理器拖入管理员模式的 Notepad++,而 magicandre 告诉您如何通过在管理员模式下运行资源管理器来解决这个问题。
我自己也遇到过类似的问题,因此我不得不进一步询问:为什么你首先要以管理员模式运行 Notepad++?就我而言,这是因为我喜欢使用的 HTML Tidy 插件必须更新 Notepad++ 的 Program Files 文件夹中的 cfg 文件才能工作;而 Windows 8 已将 Program Files 锁定得死死的。
因此最后我解锁了 Notepad++ Program Files 文件夹,如下所示: http://forums.auran.com/trainz/entry.php?115-从 Program-Files-folder 中的文件夹中删除安全限制
然后我可以愉快地以普通用户身份运行 Notepad++,然后我可以拖放或再次使用方便的上下文菜单,从非管理员模式资源管理器进入非管理员模式 Notepad++。
我希望这能对你有所帮助。
答案3
Louis 给了你正确的技术答案,下面是解决方法。你可以使用 hack 以管理员权限启动 Explorer现在您应该可以拖放文件了。
答案4
另一个解决方法是使用 Notepad++ 的独立(压缩)版本而不是安装程序版本。
- 卸载/删除 Notepad++
- 前往 Notepad++ 下载页面并下载 .zip 或 .7z 包(不是 exe)
- 将该包的内容解压到你的用户目录的某个位置
这种解决方法的缺点是,您当然需要创建自己的快捷方式,并根据需要手动更新默认文本编辑器。除非您自己破解它,否则您将不会有记事本的上下文菜单条目。