Je travaille dans un environnement où les privilèges d'administrateur local pour les utilisateurs ne sont pas autorisés. Du tout. C'est très bien, mais cela peut aussi être pénible lorsque des employés qui doivent avoir des autorisations d'administrateur local pour exécuter un programme ou installer un logiciel qui nécessite des privilèges élevés, ne serait-ce que pour faire l'installation. Il y a un utilisateur dans la comptabilité qui reçoit un DVD mensuel d'un de nos fournisseurs qui contient des rapports bien nécessaires. Pour consulter les rapports et effectuer une sauvegarde, elle doit exécuter l'exécutable sur le DVD. L'exécutable nécessite des privilèges d'administrateur pour l'installation. Donc depuis que je suis ici, chaque mois j'exécute le .exe, UAC apparaît et je fournis les informations indispensables pour exécuter le programme d'installation.
S'il s'agissait d'un programme unique, j'utiliserais le gadget Microsoft Application Compatibility Toolkit pour contourner l'UAC http://www.techrepublic.com/blog/windows-and-office/selectively-disable-uac-for-your -trusted-Vista-applications / Cependant, comme il s'agit d'un nouveau DVD qui lui est envoyé chaque mois, j'ai besoin d'une sorte d'outil qu'elle peut utiliser elle-même pour cette opération.
J'ai regardé autour de Server Fault et j'ai également fait Google-Fu, mais je n'ai rien trouvé d'utile. Je pourrais être l'un d'entre eux dans une situation unique.
Je veux utiliser Poweshell pour fabriquer l'outil. Idéalement, je veux qu'elle puisse mettre le DVD, puis lancer l'outil Poweshell (à partir de son raccourci sur le bureau, sans aucun doute) qui examine le lecteur de DVD et exécute le fichier setup.exe en tant qu'administrateur local sans l'invite UAC, sans qu'elle ait à fournir des informations d'identification.
Ce que j'ai jusqu'à présent, c'est de la camelote reconstituée en ce moment. Je ne suis pas un Jedi Powershell. Je suis un padawan Poweshell. J'ai la moitié de ce dont j'ai besoin. J'ai encore besoin de stocker le mot de passe pour qu'il ne soit pas à définir et à saisir à chaque fois qu'elle exécute le script. Je veux que ce soit aussi fluide et aussi peu de clics que possible.
Pour les crédits, je choisis d'aller avec le compte administrateur local car ce mot de passe ne change pas. Le compte d'administrateur local fera le travail. Je devrai stocker ces informations de compte sur l'ordinateur afin que Powershell puisse récupérer le compte chaque fois qu'elle exécute le script. Il faudra donc que ce soit un fichier chiffré dans une variable de chemin.
# define path to store password and input password
$path = "C:\Users\User\Password folder"
# get the encrypted local admin password from user path
$encpwd = Get-Content $path\admin.bin
# convert admin file to secure string
$passwd = ConvertTo-SecureString $encpwd
# define local admin credential
$cred = new-object System.Management.Automation.PSCredential 'computer name\local admin',$passwd
# go to DVD drive launch setup.exe as local admin with no user input required
Set-Location D:\
Start-Process PowerShell -Cred $cred -ArgumentList .\setup.exe
Je pourrais obtenir quelques downvotes pour cela, mais je sais quelque part que je dois définir et mettre "" Read-Host "du texte sur la saisie du mot de passe" -AsSecureString "" dans une variable existante ou une nouvelle variable. Je dois saisir le mot de passe dans le processus. J'ai essayé quelques spots. Pensées? Sagesse? Impossible?
Windows 7 Pro Powershell v4
J'ai trouvé un moyen d'atteindre l'objectif avec Powershell. Tout d'abord, un script doit être exécuté sur l'ordinateur de l'utilisateur (une seule fois) pour créer un mot de passe crypté, puis le stocker dans un fichier. Remarque: Le fichier de mot de passe stocké n'est pas un fichier txt contenant le mot de passe administrateur local en texte brut. Il s'agit de la sortie de la cmdlet ConvertFrom-SecureString.
Tout d'abord, le script pour entrer le mot de passe et le stocker dans un fichier. Cela ne devra être exécuté qu'une seule fois sur l'ordinateur cible.
# Enter encrypted password once and store to file; define variables
$path = "C:\Folder\Folder\"
$passwd = Read-Host "enter desired password" -AsSecureString
$encpwd = ConvertFrom-SecureString $passwd
$encpwd > $path\filename.bin
Maintenant, le script que l'utilisateur exécutera pour lancer le programme à partir du DVD en tant qu'administrateur local. Elle exécutera le script à partir du raccourci sur le bureau après avoir inséré le DVD dans le lecteur de disque. Après avoir lancé le script, le programme fonctionne parfaitement et elle peut le faire sans demander à moi ou à l'autre administrateur de l'aide (qu'elle aime).
# define path to store password and input password
$path = "C:\folder\folder"
# get the encrypted password from the path
$encpwd = Get-Content $path\filename.bin
# convert file to secure string
$passwd = ConvertTo-SecureString $encpwd
# define needed credential
$cred = new-object System.Management.Automation.PSCredential 'computer name\account name',$passwd
# go to DVD drive launch setup.exe as user with privileges to launch the program with no user input required
Set-Location D:\
Start-Process PowerShell -Cred $cred -ArgumentList .\setup.exe
Cet article Powershell.org a contribué à obtenir ma réponse http://powershell.org/wp/2013/11/24/saving-passwords-and-preventing-other-processes-from-decrypting-them/
Autoriser un utilisateur non administrateur à exécuter un programme en tant que compte administrateur local mais sans invite d'élévation
Ci-dessous sont des instructions pour configurer une solution de contournement pour obtenir une application à exécuter comme un autre compte qui est un administrateur local. Le compte qui exécute le processus n'a cependant pas besoin d'être un administrateur local sur le PC.
Exemples
Créer un nom d'utilisateur (domaine ou local):
ProxyRunAsLocalAdmin
Créer un mot de passe (domaine ou local):
<SomeComplexPassword>
Notes
Ce compte est configuré comme local admin
sur les PC où quelque chose doit être exécuté avec des autorisations d'administrateur sans vraiment donner à l'utilisateur final qui l'exécutera (exécutera) les autorisations d'administrateur local.
Il s'agit d'une option de dernier recours pour les choses qui ne fonctionneront pas pour les non-administrateurs sur les machines locales où donner leur compte (l'utilisateur final et/ou un groupe) explicite registry
et file system
l'accès aux objets de niveau ne fonctionne pas.
Sécurité
D:\Setup.exe
) Raccourci Properties
Exemple
TARGET
Exemple de champ (ci-dessous):%systemroot%\system32\runas.exe /user:domain\ProxyRunAsLocalAdmin /savecred "C:\Program Files\BlueStacks\HD-StartLauncher.exe"
START IN
Exemple:"C:\Program Files\BlueStacks"
IMPORTANT: Les guillemets autour du Start In : le champ peut être requis qu'il y ait ou non des espaces dans le chemin.
Notes de configuration supplémentaires
Notes de sécurité
Commandes
Vous disposez cependant de certains contrôles pour cette solution, tels que. . .
Eh bien, heureusement, si vous éliminez l'administrateur local, la seule véritable option qui vous reste est la ligne CMD. Powershell est bon, mais je pense que vous pourriez également exécuter un lot avec cela.
Seul inconvénient de chacun d'eux, si l'utilisateur sait ouvrir les scripts, il peut voir ce que vous y mettez, ce qui est un énorme non. Le seul moyen de contourner ce problème consiste à écrire une commande dans le code pour verrouiller le script lors de l'ouverture, et non de son exécution, pour demander un mot de passe.
Peut-être un lot ou un PowerShell écrit pour adresser spécifiquement l'UAC?
Sur une autre option pour contourner l'UAC, le programme s'exécute sous le compte système, car ce compte n'a pas d'UAC sur un système UAC. Il existe des codes sources sur Internet. Une solution complète se trouve sur robotronic.de/runasadminen.html Cette solution est également utilisable pour un compte non administrateur.