1 votes

Modifier à distance un programme pour qu'il s'exécute par défaut en tant qu'administrateur.

Je gère une cinquantaine de machines qui rencontrent une erreur avec un ancien logiciel. J'ai parlé avec le développeur, qui m'a recommandé de modifier les options de compatibilité d'une douzaine d'applications sur chaque système pour les exécuter en tant qu'administrateur.

Toutes les machines sont configurées de manière à ce que l'UAC n'envoie pas de notification, ce qui n'est donc pas un problème, et tous les dossiers pertinents sont partagés. \\MACHINE_NAME\path\to\apps\ , cliquez avec le bouton droit de la souris sur app.exe cliquez sur Propriétés et modifiez les options de l'onglet Compatibilité. De même, il n'est pas possible de sélectionner en masse des applications tout en télécommandant la machine et de les configurer toutes en même temps, il faut le faire séparément, et je dois interrompre le flux de travail de l'utilisateur pour le faire. Je sais que les options de compatibilité normales peuvent être modifiées dans le registre comme suit cette question mais est-ce que le drapeau "Run As Administrator" se retrouve là aussi ?

Existe-t-il un moyen de gérer cela de manière plus élégante ?

4voto

Darth Android Points 36975

Le drapeau de l'administrateur se retrouve là aussi, et s'appelle RUNASADMIN .

Pour définir par programme les paramètres de compatibilité des applications dans Windows, ajoutez une valeur de registre à l'un des emplacements suivants :

  • HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers (Pour l'utilisateur actuel uniquement)
  • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers (Pour tous les utilisateurs du système)

La valeur de registre doit avoir pour nom le chemin d'accès complet à l'exécutable, être de type REG_SZ et contiennent un séparées par des espaces liste de drapeaux de compatibilité comme données. Il est possible de configurer jusqu'à 3 paramètres de compatibilité différents :

Niveau de privilège :

  • RUNASADMIN - Exécute le programme avec le jeton de sécurité administratif.

Paramètres d'affichage :

  • DISABLETHEMES - Désactiver les thèmes visuels
  • 640X480 - Fonctionne en résolution d'écran 640 x 480
  • HIGHDPIAWARE - Désactiver la mise à l'échelle de l'affichage sur les paramètres DPI élevés
  • 256COLOR - Fonctionne en 256 couleurs
  • DISABLEDWM - Désactiver la composition du bureau

Mode de compatibilité :

  • WIN95 - Windows 95
  • WIN98 - Windows 98
  • WIN4SP5 - Windows NT 4.0 SP5
  • WIN2000 - Windows 2000
  • WINXPSP2 - Windows XP SP2
  • WINXPSP3 - Windows XP SP3
  • VISTARTM - Vista
  • VISTASP1 - Vista SP1
  • VISTASP2 - Vista SP2
  • WIN7RTM - Windows 7
  • WINSRV03SP1 - Windows Server 2003 SP1
  • WINSRV08SP1 - Windows Server 2008 SP1

Source :


Par exemple, l'exemple suivant signale qu'un exécutable nécessite à la fois des privilèges administratifs et le mode de compatibilité pour Windows XP SP3 :

reg.exe ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "C:\temp\compatmodel\iconsext.exe" /t REG_SZ /d "WINXPSP3 RUNASADMIN" /f

Pour appliquer ces paramètres à distance, il faut soit pousser les paramètres du registre avec une stratégie de groupe, soit exécuter à distance une commande comme celle ci-dessus, soit activer le service de registre à distance et l'utiliser pour appliquer les paramètres.

-1voto

Pxtl Points 99

Pour ceux qui cherchent à faire ça depuis PowerShell :

Ceci utilise HKCU, si vous voulez HKLM, trouvez/remplacez le. Je n'ai pas trouvé que la version HKLM fonctionnait, seulement HKCU. Peut-être que cela a nécessité un redémarrage.

#create the key if it doesn't exist already
if(-not (Test-Path -Path "HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags"))
{
    $_ = New-Item -Path "HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\" -Name "AppCompatFlags"
}
if(-not (Test-Path -Path "HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"))
{
    $_ = New-Item -Path "HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\" -Name "Layers"
}

#create the value
$_ = New-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" -Name "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe" -PropertyType String -Value 'RUNASADMIN'

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