web-dev-qa-db-fra.com

Existe-t-il une commande?

Sur les systèmes * nix, vous pouvez obtenir un shell racine comme ceci:

$ su # or 'Sudo -s'
#

La racine Shell est créée sur place dans le même terminal.

J'essaie de trouver quelque chose qui fait une élévation sur place similaire sur l'invite de commande Windows. En d'autres termes, il ne doit pas créer de nouvelle fenêtre ni afficher les invites du contrôle de compte d'utilisateur. Jusqu'à présent, j'ai pu créer une tâche planifiée qui contourne le contrôle de compte d'utilisateur, mais la fenêtre d'invite de commande élevée n'est pas générée à la place.

Existe-t-il une commande similaire pour Windows qui effectue une élévation sur place sans générer de nouvelle fenêtre?

58
user2064000

Bien que je sois un utilisateur enthousiaste de TCC-LE, il existe une solution qui ne nécessite aucun nouveau programme: -

  • Démarrez cmd en tant qu'administrateur.
  • Cela devrait vous lancer dans %SystemRoot%\system32\ - sinon, cd là.
  • copy cmd.exe cmdadmin.exe (ou tout nom de votre choix, tel que su.exe).
  • Maintenant, lancez Explorer et trouvez cmdadmin.exe.
  • Cliquez avec le bouton droit de la souris et sélectionnez Propriétés .
  • Dans l'onglet Compatibility , sélectionnez Exécuter en tant qu'administrateur (ou définissez-le pour tous les utilisateurs).

Maintenant, cmdadmin est votre su ou Sudo: vous pouvez le démarrer sans paramètres pour vous donner un shell avec des privilèges administratifs, ou vous pouvez l'exécuter avec /c pour exécuter une seule commande dans ce mode. Selon vos politiques, vous pouvez être invité ou non à une confirmation.

Notez que cela ouvrira toujours une nouvelle fenêtre (comme le fait la solution TCC start /elevated ...): cela est attendu pour une application graphique, mais pour un programme en ligne de commande, vous pouvez utiliser /k au lieu de /c pour vous permettre de: voir la sortie; ou vous pouvez exécuter via un fichier de commandes (Sudo.cmd peut-être?) qui concatène & pause à la fin de votre chaîne d'exécution.

Dans les deux cas, ce n'est pas tout à fait la même chose que su ou Sudo, mais c'est le plus proche que vous obtiendrez. En définissant manuellement la disposition des fenêtres, la nouvelle fenêtre peut être créée directement en-dessous et à côté de l’original.

18
AFH

Existe-t-il une commande permettant d'élever l'invite de commande sur place?

Il y a une manière assez peu pratique:

powershell -Command "Start-Process 'cmd.exe' -Verb runAs"

Il y avait de meilleures façons mais Microsoft les a fermées. Bien sûr, vous pouvez toujours vous retrousser les manches et écrire votre propre script équivalent à Sudo avec le code source que je viens de vous donner.

En d'autres termes, il ne doit pas créer de nouvelle fenêtre ni afficher les invites du contrôle de compte d'utilisateur.

Blasphème! Brûlez-le dans le bûcher!;) Blague à part, non. Il n'y a pas. Ce serait un bug et une faille de sécurité. Microsoft a fait un effort explicite pour que le processus standard et le processus standard aient le moins en commun possible.

Les enfants intelligents qui envisagent deux arrière-plans (un standard et un élevé) et une interface graphique pour les deux devraient en savoir plus sur Session 0 Isolation .

9
user477799

Existe-t-il une commande similaire pour Windows qui effectue une élévation sur place sans générer de nouvelle fenêtre?

Aucune commande de ce type n’est intégrée. Bien que je n’aie pas prouvé cela, j’estime que, parce que j’ai vu de nombreuses façons d’utiliser un logiciel/code supplémentaire pour résoudre ce problème.

En d'autres termes, il ne doit pas créer de nouvelle fenêtre ni afficher les invites du contrôle de compte d'utilisateur.

Oublie. Absolument oublie ça. Cela va à l’encontre de la conception de l’UAC. Si vous pouviez gérer cela, vous rompez un processus de sécurité fondamental. Attendez-vous à ce que votre solution soit corrigée par un correctif après que Microsoft ait eu connaissance des correctifs que vous auriez apportés, quel que soit le processus à suivre pour contourner ce problème.

La solution pour éviter les invites UAC est de commencer par une altitude élevée. UAC ne devrait pas vous déranger si vous êtes suffisamment autorisé. Si vous commencez par une altitude inférieure (ce qui est souvent recommandé pour des raisons de sécurité) et essayez ensuite de faire quelque chose exigeant une altitude plus élevée, attendez-vous à une interaction UAC.

2
TOOGAM

Ce que vous voulez est impossible dans Windows, car ne supporte pas ce concept. Vous devez démarrer un nouveau processus avec des autorisations plus élevées .

J'utilise nircmd pour élever les processus de la ligne de commande. Votre commande serait nircmdc elevate cmd

2
magicandre1981

J'ai vu cette question et proposé une solution simple. Il s'agit d'un petit utilitaire appelé rsudo, qui exécute des commandes en escalade à partir d'une fenêtre CMD normale.

Remarque: Une invite UAC montera. La dissimulation n'est pas possible, c'est simplement la façon dont l'UAC a été conçu.}

Usage:
  rsudo.exe "[command]"

Télécharger [[Le téléchargement ne fonctionne pas, sera mis à jour bientôt])

Remarque: les commandes sont exécutées dans une nouvelle fenêtre. Si vous voulez voir la sortie, lancez rsudo.exe "pause && [command]"

2
rahuldottech

Celui-ci est bizarre.

Vous pouvez essayer de créer un ssh sur votre propre ordinateur, qui utiliserait le même terminal existant, mais serait en réalité tout à fait différent.

Cela fonctionnera, mais ce n'est probablement pas ce que vous voulez.

D'autres peuvent le trouver utile cependant.

0
Pradyoth Shandilya