Question

J'ai lu tous les messages sur Stack Overflow au sujet CreateProcessAsUser et il y a très peu de questions résolues, donc je ne retiens pas mon souffle sur celui-ci. Mais il semble que je ne suis certainement manque quelque chose, il pourrait être facile.

Le système d'exploitation cible est Windows XP. J'ai un service en cours d'exécution en tant que « système local » dont je veux créer un processus en cours d'exécution en tant qu'utilisateur différent. Pour cet utilisateur, j'ai le nom d'utilisateur et mot de passe, LogonUser va bien et je reçois un jeton pour l'utilisateur (dans ce cas, un compte Administrateur.) J'essaie alors d'utiliser ce jeton pour appeler CreateProcessAsUser, mais il échoue parce que jeton ne vient pas avec SeAssignPrimaryTokenPrivilege - cependant, il ne SeIncreaseQuotaPrivilege. (Je GetTokenInformation pour vider tous les privilèges associés à ce jeton.) Selon la page MSDN pour CreateProcessAsUser, vous avez besoin des deux privilèges pour appeler CreateProcessAsUser avec succès.

Il est une « version restreinte du processus appelant jeton primaire », que je peux aussi dit que vous n'avez pas besoin SeAssignPrimaryTokenPrivilege si le jeton vous passez à CreateProcessAsUser () créer avec CreateRestrictedToken (), mais alors il être associé à l'utilisateur système local et non l'utilisateur cible que je suis en train de lancer le processus comme.

Alors, comment pourrais-je créer un jeton de connexion qui est à la fois une version restreinte du processus d'appel jeton principal, et est associé à un autre utilisateur? Merci!

Notez qu'il n'y a pas besoin d'une interaction utilisateur ici - il est tout sans surveillance -. Il n'y a donc pas besoin de faire des choses comme l'accaparement Winsta0, etc

Était-ce utile?

La solution

SE_ASSIGNPRIMARYTOKEN_NAME est un privilège que vous pouvez activer dans votre processus / thread avec OpenProcessToken / OpenThreadToken + LookupPrivilegeValue + AdjustTokenPrivileges (Il est facile de confondre avec

scroll top