Ну, положим, не три а как минимум щесть. Улыбаюсь А если ошибки обрабатывать, то все 10.
Если быть точным, то 5 строк. С проверкой - 7.
То есть для вас 7 строчек кода вместо дополнительных 2-х с проверкой на ERROR_ACCESSDENIED - настолько критично, что соответствует вашей фразе "Зачем такие сложности." Нет, ну если строка вашего кода стоит 100 евро, то я согласен

Я согласен, что решение с проверкой на ERROR_ACCESSDENIED на 5 строчек кода компактнее

, но оно не универсальное и применимо только на проверку использования объекта ядра, но ни в коем случае для синхронизации или того хуже - обмена данными между процессами.
Более всего, касаемо темы автора топика, применение дескирпторов безопасности важно, что человек узнает новые возможности в программировании Windows, потому что когда понадобится работать с объектами ядра не только для определения его использования с разными правами пользователя, а и другими возможностями данных объектов, опять придется искать решение.