3 votes

Exécution de Process Explorer en tant qu'administrateur lors de l'ouverture d'un compte non-administrateur

J'ai essayé de réaliser une tâche supposée simple qui consiste à lancer l'Explorateur de processus avec les droits d'administrateur (pour afficher tous les processus) en me connectant en tant qu'utilisateur normal sur mon système Win10 Pro 21H1. Cela s'est avéré plus difficile que je ne l'avais prévu.

Voici ma situation :

  1. J'ai plusieurs comptes d'utilisateurs normaux, disons que l'un d'entre eux s'appelle johny_user
  2. J'ai un compte administrateur, disons appelé johny_admin

Ce que je veux, c'est que lorsque je me connecte en tant que johny_user Je souhaite exécuter Process Explorer avec des privilèges d'administrateur. Idéalement, j'aimerais le faire sans intervention manuelle et éviter l'invite de l'UAC.

Méthode du planificateur de tâches

Au départ, je voulais créer une tâche dans le planificateur de tâches pour effectuer cette opération, de la même manière que ce qui est décrit ici : Exécuter le gestionnaire des tâches (explorateur de processus) en tant qu'administrateur

Cependant, lorsque je lance le planificateur de tâches en tant que johny_user Je ne peux pas créer une tâche à exécuter avec les privilèges les plus élevés, en fournissant les informations suivantes johny_admin les références. Si j'essaie de le faire, je reçois cette erreur ( capture d'écran ):

Task Scheduler cannot create the task.
The user account is unknown, the password is incorrect,
or the user account does not have permission to create this task.

Si je lance le planificateur de tâches avec johny_admin Je peux créer la tâche sans problème. J'utilise les options suivantes :

  • condition "Exécuter à la connexion de johny_user"
  • Lors de l'exécution de la tâche, utilisez le compte d'utilisateur suivant : johny_admin
  • Option de sécurité "Exécuter lorsque l'utilisateur est connecté"
  • Exécuter avec les privilèges les plus élevés - coché

Lorsque je me connecte en tant que johny_user L'explorateur de processus est en effet exécuté dans johny_admin mais sans interface graphique, ce qui annule l'intérêt de l'exécuter.

Méthode PowerShell

J'ai donc décidé d'essayer d'exécuter Process Explorer avec Powershell script qui serait lancé par le planificateur de tâches à l'ouverture de la session. Je ne voulais pas donner mon mot de passe en texte clair, j'ai donc opté pour cette solution :

script1.ps1

$PassKey = get-content C:\scripts\passkey.txt
$Password = get-content C:\scripts\password.txt | Convertto-SecureString -Key $PassKey
$pp=New-Object -typename System.Management.Automation.PSCredential -argumentlist "MY-PC\johny_admin",$Password

$script = "c:\scripts\script2.ps1"

Start-Process powershell -Credential $pp -ArgumentList '-noprofile -command &{Start-Process $script -verb runas}'

Et script2.ps1 contient juste :

Start-Process "C:\Program Files\Process Explorer\procexp.exe" -ArgumentList "/t /p:h"

Script1.ps1 devrait exécuter script2.ps1 avec des autorisations élevées. Cependant, bien qu'une nouvelle console powershell apparaisse pendant un moment, le script n'est pas exécuté.

Travailler, mais...

Jusqu'à présent, le seul moyen d'atteindre mon objectif était d'utiliser AdvancedRun de Nirsoft. Cependant, le fichier cfg de ce logiciel doit contenir les éléments suivants de johny_admin mot de passe en texte clair, ce que je n'aime pas.

C'est pourquoi

Quelqu'un peut-il me conseiller sur la manière de réaliser cette tâche simple ? Je ne me soucie guère de savoir si j'y parviendrai avec le planificateur de tâches, Powershell ou toute autre méthode. Je veux juste éviter de stocker les identifiants de l'administrateur en texte clair quelque part.

Quelques liens qui m'ont été utiles lors de l'écriture des scripts Powershell scripts :
https://ss64.com/ps/syntax-elevate.html
https://social.technet.microsoft.com/Forums/office/en-US/132e170f-e3e8-4178-9454-e37bfccd39ea/startprocess-verb-runas-amp-credential?forum=winserverpowershell
https://stackoverflow.com/questions/55723583/how-to-launch-an-other-ps1-within-a-ps1-with-an-other-accompt-and-admin-rights

0voto

harrymc Points 394411

Le problème est l'exécution d'un processus qui nécessite une autorisation d'accès à l'administration sans que l'on ait besoin d'une autorisation d'accès. sans spécifier le mot de passe en texte clair.

Une solution consisterait à utiliser un utilitaire tel que RunAsSpc avec laquelle vous pouvez appeler un programme nécessitant un mot de passe. Le mot de passe et tous les autres détails sont conservés par RunAsSpc dans une base de données cryptée. Il peut faire runas plus un mot de passe plus un cryptage (bien que l'utilisateur puisse être vous-même).

RunAsSpc est gratuit pour un usage privé. Pour plus de détails sur son utilisation, voir l'article
Transmettre le mot de passe à Runas avec RunAsSpc .

Pour une protection simple contre les utilisateurs non avertis, vous pouvez parsemer votre fichier batch de références à des variables environnementales non définies. dans votre fichier batch. Ces variables s'avèrent vides lorsqu'elles sont évaluées, mais elles dissuaderont de lire le fichier batch.

En utilisant cette idée, le script suivant :

@echo off
echo "Hello, world!"

peut ressembler à ceci :

@%n%e%x%c%s%h%z%o%f% o%d%f%d%f
e%n%c%o%h%n%o %n%H%p%e%n%l%o%l%o%o%o%,%o% w%c%o%n%r%p%l%k%d%e%!%s%

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X