在Windows上将每个shell会话的应用程序限制为一个实例

Wie*_*zny 0 c c++ windows windows-shell single-instance

有很多解决方案可以限制应用程序运行两次.按进程名称搜索,使用命名的互斥锁等.但是如果我想将我的应用程序限制为shell会话,那么所有这些方法都不起作用.

用户可能在Windows上拥有多个登录会话和shell(对吗?)?如果这是真的,我希望能够在每个shell会话中运行我的应用程序的一个实例,但只允许一个.

有没有办法获得一个shell标识符,然后可以将其放入互斥锁名称?

Pat*_*ick 5

您可以创建本地(仅会话)或全局(整个系统)互斥锁.有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/system.threading.mutex.aspx.寻找全球和本地.