SYSTEM进程是否可以与非SYSTEM进程共享数据
Can a SYSTEM process share data with a non-SYSTEM process?
我试图使用QSharedMemory
和QClipboard
在SYSTEM
进程(运行在WinSta0\Winlogon
桌面上)和普通用户进程之间共享数据,但两者都无法与运行在普通桌面上的其他non-SYSTEM
进程共享数据。我相信这是因为WinSta0\Winlogon
桌面是一个孤立的桌面。
我的应用程序是一个拍摄Windows安全桌面并将其发送到剪贴板的程序。
问题是:有没有办法在该进程和non-SYSTEM
进程之间共享内存数据?(实际上我是用文件来做这项工作的)。
在Windows Vista及更高版本上,系统服务在独立会话("会话0")中运行。这很可能是您出现问题的原因。(请注意,所有系统服务都在会话0中运行,无论它们是否在SYSTEM
安全上下文中运行。同样,也可以在任意会话中以SYSTEM
的身份启动进程。)
每个会话都有一个单独的WinSta0
工作站,因此也有一个独立的剪贴板。所以剪贴板功能在这里不起作用。
文件映射对象(共享内存)可以跨会话边界工作。然而,我不知道用Qt是否可以做到这一点。最好的选择似乎是使用setNativeKey
,它大概确定了文件映射的名称;要使文件映射跨会话边界,请使用以Global
开头的名称,如MSDN关于CreateFileMapping的文章中所述。如果可能,请考虑直接使用Win32 API,而不是Qt。
相关文章:
- boost::进程间消息队列引发错误
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 是否可以通过C++扩展强制多个python进程共享同一内存
- IPC使用多个管道和分支进程来运行Python程序
- 异常属于C++中的线程还是进程
- WMI检测进程创建事件-c++
- 如何在c++中使用system()来运行包含空格的python脚本
- c++多进程编写一个唯一的文件
- 使用system()创建独立的子进程
- 使用system("./some_program"),当"some_program"死亡时,如何防止父进程终止?
- 在父母获得杀死信号和退出后,用system()产生的儿童进程继续运行
- 子输出出现在主进程使用 system() 调用它之前
- SYSTEM进程是否可以与非SYSTEM进程共享数据
- C++ System V 信号量:多个服务器进程,一个客户端进程
- System() 来启动一个进程,但使用 CreateProcess 失败
- Linux:来自内存密集型进程的system(),无需分叉
- 在C++中使用system()以防止启动新进程的替代方法
- 当用std::system启动进程时,我可以指定一个工作目录吗
- 如果使用system用户令牌启动登录用户进程,是否会危及系统安全
- 使用system()执行后台进程