【问题标题】:Create session mutex from a service?从服务创建会话互斥锁?
【发布时间】:2010-11-30 12:11:25
【问题描述】:

考虑一下:Mutex Class (MSDN)

(并使用 Sysinternals 的 WinObj。)

我如何为创建它的会话以外的会话创建互斥锁?

即从会话 0 中的系统服务,在会话 1 中创建互斥锁?

我尝试使用

创建互斥锁

\Sessions\1\BaseNamedObjects\myName

但这失败了。

是否可以直接写入 WinObj 中显示的 Windows 对象命名空间的根?

【问题讨论】:

  • 会话对象只能由在该会话中运行的进程创建,至少从用户模式;我不知道您是否可以在内核驱动程序中执行此操作。但是你为什么要这样做呢?乱搞你自己以外的会话是不好的行为。
  • 我想通过系统服务以编程方式在用户会话中访问和创建突变体。我不明白为什么这不可能。事实上,我可以 CreateProcessAsUser 将一个进程注入到用户的会话中,以代表我的服务执行这些任务,这给了我同样的效果。如果可能,我更愿意直接从服务中操作对象。

标签: windows object mutex


【解决方案1】:

尝试在您的互斥锁名称中使用“Global\”前缀。在运行终端服务的服务器上,命名系统互斥体可以具有两个级别的可见性。如果其名称以前缀“Global\”开头,则互斥锁在所有终端服务器会话中可见。

或者您可以尝试另一种方法。尝试使用名称中带有“Global\”前缀的CreateFileMappingOpenFileMapping 方法,而不是互斥。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    • 2022-08-10
    • 1970-01-01
    相关资源
    最近更新 更多