Я пишу драйвер устройства Windows для пользовательского USB-устройства, но у меня возникают проблемы с открытием устройства из моей пользовательской программы (с помощью CreateFile), когда пользовательская программа запускается от имени пользователя домена. Если я работаю как локальный пользователь или как администратор (или администратор «Запуск от имени»), я могу нормально открыть драйвер, но как пользователь домена GetLastError
возвращает 5 (доступ запрещен).
Изначально у меня была эта проблема и с локальными пользователями, и я обнаружил, что мне нужно добавить следующую запись SDDL в файл .inf, что решило проблему для локальных пользователей:
HKR,,Security,,"D:P(A;;GA;;;SY)(A;;GA;;;BA)(A;;GRGW;;;BU)
Из этой ссылки: http://msdn.microsoft.com/en-us/library/windows/hardware/ff563667(v=vs.85).aspx
Когда я обнаружил, что у пользователей домена нет доступа, я подумал, что простое добавление их к этой записи SDDL даст им доступ, но, похоже, это не работает: мне все равно отказано в доступе. Я даже пробовал крайние решения, такие как предоставление всем пользователям (всем (WD), неавторизованным пользователям и т. Д.) Полного доступа, но это тоже не работает, что заставляет меня думать, что проблема в другом; то есть что-то еще запрещает доступ пользователей домена, что имеет приоритет над разрешением в записи SDDL в драйвере inf.
Итак, мой вопрос: чего мне не хватает, чтобы предоставить пользователям домена (или всем пользователям) доступ для подключения к драйверу? Или есть какие-то другие решения этой проблемы (например, подключение к драйверу в качестве службы, а затем доступ к этой службе из пользовательской программы)?