Почему мой EventWaitHandle получает исключение UnauthorizedAccessException?
Я кодировал исполняемый процесс, который выполняет следующую строку кода:
immediateShutdownEvent = new EventWaitHandle(false, EventResetMode.ManualReset, "Global\\immediateShutdownEvent", out createdNew, security);
Я могу установить это событие, когда этот исполняемый процесс работает, и он работает нормально, но как только исполняемый файл прерван как процесс (например, из диспетчера задач, если вы вручную уничтожаете процесс), и я автоматически перезапускаю процесс сразу после завершения при этом я получаю "System.UnauthorizedAccessException: доступ к пути" Global \ немедленный обмен данными "запрещен", даже если он работает в том же контексте SYSTEM. Почему это и как я могу это исправить?
1 ответ
Я выяснил, как обойти это, используя OpenExisting() и захватив WaitEventHandle... затем закрыв его, если он существует, хотя это означает, что вашей текущей учетной записи необходимы права доступа для удаления этого события.