J'utilise psexec.exe
pour exécuter des programmes dans un contexte de sécurité différent. Cependant, les programmes démarrent, mais ils ne semblent pas fonctionner dans le contexte de sécurité spécifié.
Dans sa forme minimale:
psexec -u wsadmin -p password cmd
Démarre une nouvelle fenêtre cmd si je tape dans cette fenêtre whoami
C:\Windows\system32>whoami
win-k1r7g38nlkt\wsadmin
C:\Windows\system32>net localgroup administrators
Alias name administrators
Comment Administrators have complete and unrestricted access to the computer/domain
Members
-------------------------------------------------------------------------------
Administrator
wsadmin
The command completed successfully.
Comme vous pouvez le voir, je suis définitivement l’autre utilisateur. Et je peux confirmer que cet utilisateur est membre du "groupe des administrateurs"
C:\Windows\system32>mkdir test
Access is denied.
Si j'utilise des runas avec l'utilisateur spécifié, cela fonctionne comme supposé. Mais je dois fournir le mot de passe sur la ligne de commande.
J'ai trouvé une solution:
Il s'avère que lorsque vous avez activé le contrôle de compte d'utilisateur, psexec ne fonctionne pas comme supposé.
Chaque fois que HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA
est défini sur 0
, psexec fonctionne comme prévu.
Sous Windows Vista et les versions ultérieures, si le contrôle de compte d'utilisateur est activé, un processus lancé par psexec
- même s'il est exécuté à partir d'un compte administrateur - doit avoir son jeton d'élévation défini afin d'obtenir les privilèges complets. Cela peut être fait en passant l'attribut -h
dans la ligne de commande psexec
. Donc, vous changeriez votre commande en:
psexec -h -u wsadmin -p password cmd
Pour plus d'informations, lancez psexec /?
:
-h If the target system is Vista or higher, has the process
run with the account's elevated token, if available.
Il m'a fallu des heures pour trouver un moyen de travailler avec PsExec
entre deux ordinateurs Windows 7 avec un utilisateur non administrateur commençant PsExec
... Désactiver le contrôle de compte d'utilisateur (EnableLUA=0
, ConsentPromptBehaviorAdmin=0
, LocalAccountTokenFilterPolicy=1
) ne fonctionnait pas, désactiver les pare-feu ne fonctionnait pas ...
Ici, j'ai trouvé le moyen de travailler - merci JelmerS: (Info de PSexec ne se connecte pas à la machine à l'aide du nom d'utilisateur et du mot de passe fournis )
Cela est dû au fait que psexec
tente toujours d'accéder au partage ADMIN$
avec vos informations d'identification locales avant d'exécuter votre commande en tant qu'utilisateur différent. Selon ce fil, vous pouvez mettre en cache les informations d'identification avant d'exécuter psexec:
cmdkey.exe /add:MACHINE_NAME_HERE /user:MACHINE_NAME_HERE\Administrator /pass:PASSWORD_HERE
psexec.exe \\MACHINE_NAME_HERE -i notepad
cmdkey.exe /delete:MACHINE_NAME_HERE
Voici ce qui a fonctionné pour moi. Il ne supprime pas complètement le contrôle de compte d'utilisateur, mais le désactive pour les administrateurs.
Configuration de l'ordinateur\Paramètres Windows\Paramètres de sécurité\Stratégies locales\Options de sécurité\Contrôle de compte d'utilisateur: Exécuter tous les administrateurs en mode d'approbation administrateur - Désactivé