获取优先于提升进程的互斥量
Acquire mutex with preference for elevated process
我有一个 Mutex 来避免同时来自 运行 的几个进程,一旦 Mutex 被释放,这些进程可能正在等待启动。现在我可以有一些实例试图获得一个提升的和非提升的 Mutex。我希望提升的进程能够在持有锁的进程释放互斥锁后在非提升的进程之前获取互斥锁。
不太可能,但我想考虑许多未提升的实例和许多提升的实例竞争同一个互斥锁以带来强大的功能。
实现该目标的稳健好方法是什么?
问题的解决方案可以使用多个互斥锁。我在想我可以研究这种方法来区分高架和非高架并玩一些把戏。
编辑:
我主要在寻找 Windows Vista+ 的答案,但如果我们将问题减少到优先获取互斥锁的进程类别,我认为该问题适用于其他操作系统。了解其他操作系统的解决方案也会很有趣。
只需编写完全符合您要求的代码。例如,您可以计算受互斥锁保护的等待互斥锁的提升进程数。然后对非提升进程进行编码,直到该计数降为零。无论如何,所有进程都在合作——作弊者可能根本拒绝阻止互斥锁。所以应该没有安全问题。
我有一个 Mutex 来避免同时来自 运行 的几个进程,一旦 Mutex 被释放,这些进程可能正在等待启动。现在我可以有一些实例试图获得一个提升的和非提升的 Mutex。我希望提升的进程能够在持有锁的进程释放互斥锁后在非提升的进程之前获取互斥锁。
不太可能,但我想考虑许多未提升的实例和许多提升的实例竞争同一个互斥锁以带来强大的功能。
实现该目标的稳健好方法是什么?
问题的解决方案可以使用多个互斥锁。我在想我可以研究这种方法来区分高架和非高架并玩一些把戏。
编辑: 我主要在寻找 Windows Vista+ 的答案,但如果我们将问题减少到优先获取互斥锁的进程类别,我认为该问题适用于其他操作系统。了解其他操作系统的解决方案也会很有趣。
只需编写完全符合您要求的代码。例如,您可以计算受互斥锁保护的等待互斥锁的提升进程数。然后对非提升进程进行编码,直到该计数降为零。无论如何,所有进程都在合作——作弊者可能根本拒绝阻止互斥锁。所以应该没有安全问题。