異なるユーザーによって作成されたプロセス間でboostという名前のmutexを共有する際に問題があります。 最初のプロセスはサービスによって作成され、LocalSystemとしてログオンします。 2番目のプロセスは自分で作成します(通常はプロセスを正常に実行します)。Boost named_mutexは、異なるユーザーによって作成されたプロセス間で共有できません。
両方のプロセスは、(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を()を入力することができていることを確認します。 この問題は、サービスが「自分」としてログオンしてから、2番目のプロセスを管理者として実行した場合にのみ発生します。
この問題をブーストまたはいくつかの簡単なコードで解決する方法はありますか? http://support.microsoft.com/kb/193073
(私は「グローバルの\ mymutex」としてミューテックス名を設定しようとしましたが、何のミューテックスを作成することはできません) は(私はまた、Windows CreateMutex()を使用しようとしましたが、中に述べたように、それはまた、同じ問題に苦しんでいますkb193073)
ありがとう!あなたが管理者として問題がないと言うなら
サイモン