Récemment, j'essayais de donner à mes droits d'administrateur d'application sans que le système demande "Voulez-vous donner des droits d'administrateur?" et j'ai trouvé un moyen qui fonctionne parfaitement.
Solution que j'ai trouvée
J'ai créé un fichier bat nommé nonadmin.bat et y ai écrit le code ci-dessous
cmd min C set __COMPAT_LAYER=RunAsInvoker && start %1
et si nous faisons glisser un exe dessus, cela leur donne des droits d'administrateur (avant qu'il ne me permette pas d'accéder aux variables d'environnement sans lui mais après avoir fait rouler le fichier sur bat, cela a fonctionné).
Question
Maintenant ma question est: -
__ COMPAT_LAYER, et comment l'utiliser
__ COMPAT_LAYER est une variable d'environnement système qui vous permet de définir des couches de compatibilité, qui sont les paramètres que vous pouvez ajuster lorsque vous cliquez avec le bouton droit sur un exécutable, sélectionnez Propriétés et accédez à l'onglet Compatibilité.
Il y a plusieurs options au choix en plus de celle que vous connaissez:
Vous pouvez utiliser plusieurs options en les séparant par un espace: set __COMPAT_LAYER=Win98 640x480
Suppression de la variable __COMPAT_LAYER
Ces paramètres persistent tant que la variable existe. La variable cesse d'exister lorsque soit l'invite de commande dans laquelle la variable a été définie est fermée, soit lorsque la variable est manuellement désactivée avec la commande set __COMPAT_LAYER=
.
Étant donné que vous définissez la variable via un script de traitement par lots, la variable est automatiquement désactivée une fois que l'exécutable que vous faites glisser dessus se termine et que le script se ferme. Il est important de noter que les paramètres des variables persistent dans tous les processus enfants générés par l'exécutable que vous sélectionnez.
La sécurité d'utilisation de __COMPAT_LAYER
Définir __COMPAT_LAYER sur RunAsInvoker ne vous donne en fait pas de privilèges d'administrateur si vous ne les avez pas; cela empêche simplement le pop-up UAC d'apparaître, puis exécute le programme comme n'importe quel utilisateur l'a appelé . En tant que tel, il est sûr de l'utiliser car vous n'obtenez pas comme par magie les droits d'administrateur.
Vous pouvez également définir la variable sur RunAsHighest (déclenche uniquement UAC si vous avez des droits d'administrateur, mais n'accorde pas non plus de droits d'administrateur si vous n'en avez pas) ou RunAsAdmin (déclenche toujours UAC).