Требуется доступ к «NtSetUuidSeed» из процесса не из локальной системы - PullRequest
1 голос
/ 10 августа 2009

Я пытался получить Uuid через NtAllocateUuids или просто вызывал UuidCreateSequential, но Windows не смогла получить аппаратный адрес Ethernet или Token-Ring для моего ноутбука. И поэтому, когда система загружается, Windows устанавливает для UuidSeed случайное число вместо заданного MAC. -> Уникальность гарантируется только до следующего перезапуска системы.

Я пытался вручную установить UuidSeed с помощью NtSetUuidSeed, но получал ошибку STATUS_ACCESS_DENIED. «Ссылка на собственный API Windows NT / 2000» имеет следующие замечания: - Токен вызывающего потока должен иметь AuthenticationId SYSTEM_LUID

Есть ли способ добиться этого с помощью процесса, работающего от имени администратора? Что-то вроде ImpersonateLoggedOnUser () может работать, но на самом деле это также доступно только как LocalSystem: /

Спасибо;)

Ответы [ 2 ]

0 голосов
/ 10 августа 2009

ImpersonateLoggedOnUser нормально работал с дескриптором токена, возвращенным из:

HANDLE GetLSAToken () // продублировать системный токен из процесса «Система»
или
BOOL CreatePureSystemToken (HANDLE & hToken) // создаем новый системный токен

http://www.codeproject.com/KB/system/RunUser.aspx CoreCode.cpp

0 голосов
/ 10 августа 2009

Вы можете создать программу и запланировать ее запуск с помощью команды AT. Служба планирования запускается как локальная системная учетная запись. В Vista все по-другому, и я не уверен, что это возможно. Вы можете написать свой собственный сервис, конечно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...