2009-12-04 4 views
0

Je souhaite obtenir les privilèges d'un utilisateur sélectionné sur une machine locale. Je sais comment les obtenir de l'utilisateur actuel, donc mon problème est de savoir comment ouvrir un processus en tant qu'utilisateur différent.ouvrir le processus en tant qu'utilisateur différent

Je cherche actuellement plus d'informations sur CreateProcessAsUser()

grâce

+0

La documentation que vous liez est très complète. Quelle partie avez-vous des difficultés avec? –

Répondre

2

Vous ne devriez pas créer un processus en tant qu'utilisateur différent juste pour obtenir ses privilèges. Pour obtenir un privilège d'utilisateur, vous avez besoin d'un jeton d'identité. Pour démarrer un processus en tant qu'utilisateur, vous avez besoin d'un jeton d'emprunt d'identité. Les jetons d'identité sont très peu risqués, les jetons d'usurpation d'identité sont des affaires très sérieuses. À tout le moins, vous devez connaître le mot de passe de l'utilisateur afin d'emprunter l'identité (ou avoir un contexte capable d'impaction, comme un contexte de sécurité d'échange SSPI).

Utilisez LookupAccountName pour obtenir le SID, LsaOpenPolicy et LsaEnumerateAccountRights.

1

Vérifiez ce lien pour savoir comment faire d'un service au sein de Delphi: Launch your application in Vista under the local system account without the UAC popup

To launch a process under the local system compte j'effectue les étapes (à partir d'une application de service) suivantes:

  1. Obtenez la console active SessionId utilisant WTSGetActiveConsoleSessionId
  2. Étant donné que j'ai besoin de lancer l'application sous un compte système, le code utilise le jeton de Winlogon, depuis Winlogon s'exécute sous le compte système . Donc, j'obtiens l'ID de processus Winlogon et Dupliquer le jeton.
  3. Ensuite, je m'assure que j'ai envoyé le paramètre startupinfo lpDesktop à winsta0 \ Default car j'ai besoin de lancer mon processus là.
  4. Puis j'utilise CreateProcessAsUser avec le jeton dupliqué de Winlogon pour lancer mon processus dans la session 1.
  5. C'est tout. J'ai fini.
Questions connexes