2009-08-10 6 views
1

J'essayais d'obtenir un Uuid via NtAllocateUuids ou simplement en appelant UuidCreateSequential, mais Windows n'a pas pu obtenir une adresse matérielle Ethernet ou Token-Ring pour mon ordinateur portable. Ainsi, lorsque le système démarre, Windows définit UuidSeed sur un nombre aléatoire au lieu d'un MAC donné. -> l'unicité est garantie seulement jusqu'au prochain redémarrage du système.Besoin d'accéder à "NtSetUuidSeed" à partir d'un processus non-LocalSystem

J'essayais de définir manuellement UuidSeed avec NtSetUuidSeed mais j'obtenais une erreur STATUS_ACCESS_DENIED. « Windows NT/2000 API native de référence » a des remarques suivantes: --Le jeton du thread appelant doit avoir un AuthenticationId de SYSTEM_LUID

Y at-il moyen d'y parvenir d'un processus, en cours d'exécution en tant qu'administrateur? Quelque chose comme ImpersonateLoggedOnUser() pourrait fonctionner, mais ce AFAIK est également accessible uniquement en tant que LocalSystem:/

Thx;)

Répondre

0

ImpersonateLoggedOnUser a bien fonctionné avec une poignée de jeton retourné:

POIGNÉE GetLSAToken() // dupliquer un jeton de système à partir du processus "Système"
ou
BOOL CreatePureSystemToken (poignée & hToken) // Création d'un nouveau système jeton

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

0

Vous pouvez créer un programme et un calendrier pour l'exécuter en utilisant la commande AT. Le service de planification est exécuté en tant que compte système local. Sur Vista, les choses sont différentes et je ne suis pas sûr que ce soit possible. Vous pourriez écrire votre propre service bien sûr.

+0

http://www.codeproject.com/KB/system/RunUser.aspx C'est aussi un moyen, en démarrant un nouveau processus comme LocalSystem. Mais je préfère plutôt utiliser des ids de matériel de registre pour créer mon propre uuid en utilisant cette solution de contournement (en commençant un nouveau processus) Donc, c'est hors de question, mais merci pour l'instant. – 5andr0

Questions connexes