Господа, кто с таким сталкивался.
В windows сервисе (не важно под каким account запускается) создается именованный мьютекс с "хорошими" правами доступа:
MutexSecurity mSec = new MutexSecurity();
SecurityIdentifier sidOwner = new SecurityIdentifier(WellKnownSidType.CreatorOwnerSid, null);
SecurityIdentifier sidAuthUser = new SecurityIdentifier(WellKnownSidType.AuthenticatedUserSid, null);
MutexAccessRule rule = null;
rule = new MutexAccessRule(sidOwner, MutexRights.FullControl, AccessControlType.Allow);
mSec.AddAccessRule(rule);
rule = new MutexAccessRule(sidAuthUser, MutexRights.FullControl, AccessControlType.Allow);
mSec.AddAccessRule(rule);
this.testmutex = new Mutex(true, mutname, out muNew, mSec);
Запускается некоторое приложение, которое проверяет существование мьютекса,
скажем при помощи Mutex.OpenExisting(...). Вылетает exception — No handle of the given name exists.
При этом если таким же образом создать мьютекс в консольном приложении, то Mutex.OpenExisting(...)
возвращает мьютекс и никаких ошибок не возникает.
Такое поведение наблюдается под Vista, Server 2003. Под ХР, кстати, все хорошо.