У меня проблема с разделением надстройки с именем mutex между процессами, которые создаются разными пользователями.
Первый процесс создается службой, которая входит в систему как LocalSystem.
Второй процесс создан мной (просто выполните процесс как обычно).
Оба процесса запускают эту функцию (C ++):
void MyFunc()
{
//Open or create the named mutex
named_mutex mutex(open_or_create, "mymutex");
{
scoped_lock<named_mutex> lock(mutex);
DoSomeWork();
}
named_mutex::remove("mymutex");
}
В настоящее время я наблюдаю, что оба процесса могут одновременно вводить DoSomeWork ().
Эта проблема не будет возникать только при входе службы в систему как «я», а затем я запускаю второй процесс как администратор.
Есть ли способ решить эту проблему путем повышения или с помощью некоторых простых кодов, вместо этого?
http://support.microsoft.com/kb/193073
(я пытался задать имя мьютекса как «Global \ mymutex», но мьютекс создать не удалось)
(Я также пытался использовать Windows CreateMutex (), но он также страдает от той же проблемы, как упомянуто в kb193073)
Спасибо!
Simon