【问题标题】:Is it possible to check if a Mutex is created by using wildcards?是否可以使用通配符检查是否创建了互斥锁?
【发布时间】:2015-02-02 10:38:26
【问题描述】:

例如,我的应用程序像这样创建互斥锁:

MyApplication\\{UserName}

然后我的更新程序(更新此应用程序)需要检查它是否已创建但它不知道用户名。

我有代码:

string mutexString = "MyApplication\\User1"
bool isNew;
var mutex = new Mutex(true, mutexString , out isNew);
if(isNew)
{
   //Run my program
}

如果我知道用户名,这可以正常工作,但我想知道这是否可以与通配符一起使用?

【问题讨论】:

  • 您希望从通配符返回什么? new Mutex 创建或检索单个实例。如果匹配多个会怎样?
  • 所以我不需要 Mutex 对象。我只需要知道 Mutex 是否已经创建。也许检查进程是否正在运行是一个更好的解决方案?
  • 那将是严重的安全漏洞。任何人都可以掌握所有的互斥锁并锁定一切。
  • 不可能使用通配符来检索互斥锁。
  • 检查进程是否处于活动状态听起来是一个更好的解决方案。

标签: c# mutex wildcard


【解决方案1】:

所以从 cmets 中我感觉到这是不可能的,因此更好的解决方案可能是检查我这样实现的正在运行的进程:

foreach (var process in Process.GetProcesses())
{
    if (process.MainWindowTitle.IndexOf("MyApp",StringComparison.InvariantCultureIgnoreCase) >= 0)
    {
         isNew = false;
    }   
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 2021-06-10
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多