我有一个在 Windows 上下载并启动的 QT 应用程序。如果我从 Windows 资源管理器手动启动它,我可以使用拖放来加载文件。如果我通过 python 脚本从 windows powershell 启动完全相同的应用程序,调用它subprocess.run(path_to_app_executable)
,拖放不起作用。
是因为使用了子流程吗?在 mac 上,我使用subprocess.run()
命令open
,拖放工作正常。
我有一个在 Windows 上下载并启动的 QT 应用程序。如果我从 Windows 资源管理器手动启动它,我可以使用拖放来加载文件。如果我通过 python 脚本从 windows powershell 启动完全相同的应用程序,调用它subprocess.run(path_to_app_executable)
,拖放不起作用。
是因为使用了子流程吗?在 mac 上,我使用subprocess.run()
命令open
,拖放工作正常。
具有 UAC 的 Windows 系统具有“完整性级别”的概念。提升的进程(当您使用“以管理员身份运行”时)被标记为“高”完整性级别,而正常进程(包括您的桌面和文件管理器)在“中”级别下运行。
低层进程不能直接向高层进程发送数据;换句话说,他们无法做任何事情来破坏这些进程——这是对Shatter 攻击的一种缓解。
但除其他外,这也意味着他们无法发送构建拖放等功能的“窗口消息”。