Windows безопасность основана на учетной записи. Вы можете защитить свой объект события от других учетных записей пользователей, но не от других процессов, использующих эту же учетную запись в текущем сеансе входа в систему.
Обратите внимание, что если вы беспокоитесь только о случайных коллизиях, а не злонамеренных, вы можете использовать пространство имен частного объекта (поиск CreatePrivateNamespace()
). Вы должны создать граничный дескриптор, добавить SID своей учетной записи к этому дескриптору, затем использовать дескриптор для создания частного пространства имен, а затем, наконец, создать любые объекты ядра, которые вы будете sh защищать от столкновения в этом пространстве имен.
Это защищает только от случайного столкновения, так как любой другой процесс, выполняющийся в вашей учетной записи, может открыть пространство имен для доступа к объектам в нем.
Я должен добавить, что если вы хотите, чтобы имена были видимыми, но маловероятными чтобы столкнуться, вы можете выбрать строковые GUID в качестве своих имен (например, общий шаблон, используемый для обеспечения работы только одного экземпляра исполняемого файла, - это создание именованного объекта ядра и проверка GetLastError()
для ERROR_ALREADY_EXISTS
). Для этого очень хорошо работают GUID, так как они вряд ли случайно столкнутся и намного проще в использовании, чем личное пространство имен.