セッションを超えた Mutex の動作(2)
NULL の DACL を入れてやればちゃんとハンドルを取得できました。
SECURITY_DESCRIPTOR sd; ::InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION); ::SetSecurityDescriptorDacl(&sd, TRUE, NULL, FALSE); SECURITY_ATTRIBUTES sa; sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.lpSecurityDescriptor = &sd; sa.bInheritHandle = TRUE; HANDLE hMutex = ::CreateMutex(&sa, FALSE, strMutexName);
あと、セッションを超えていることそのものが原因ではなくて、COM をシングルトンオブジェクトで作った場合、その実体は VM プロセス上で動くらしくて、そいつがセッションを超えてハンドルを取得することが出来なかったっぽいです。
ちゃんと最低限のセキュリティ書いた方がいいかなぁ……この辺訳ワカラナス(;´Д`)