"Accès refusé" lorsqu'un fichier .CMD tente de copier un fichier

0

J'ai un fichier .CMD que je lance en faisant un clic droit sur un fichier dans l'Explorateur Windows; le fichier sur lequel je clique est passé en paramètre au fichier .CMD. Le fichier .CMD effectue un certain traitement, puis copie un fichier d’un dossier à un autre. Cela a bien fonctionné sous Windows XP; sous Windows 8, lorsque la commande "copier" est exécutée, le message d'erreur "Accès refusé" s'affiche.

Si je copie le fichier à l'aide de l'Explorateur Windows, une boîte de dialogue apparaît avec le message "Vous devez fournir une autorisation administrateur pour copier dans ce dossier". Je clique sur "Continuer" et le fichier est copié.

Je ne connais pas les détails du contrôle de compte d'utilisateur, mais je sais que je ne souhaite pas modifier les autorisations pour autoriser la copie du fichier sans intervention. Autrement dit, je ne veux pas que tout le fichier .CMD soit exécuté en tant qu'administrateur. Je veux cliquer avec le bouton droit sur le fichier d'entrée, exécuter le fichier .CMD et faire apparaître la boîte de dialogue lorsque la commande "copie" tente de s'exécuter; Je cliquerai ensuite sur "Continuer" pour autoriser uniquement l'exécution de la commande de copie avec des privilèges d'administrateur. (S'il existe un autre emplacement dans le fichier .CMD où un fichier a été copié, ou toute autre opération nécessitant des privilèges d'administrateur, je souhaite que la boîte de dialogue réapparaisse pour vous demander si vous pouvez exécuter cette opération en tant qu'administrateur).

Cela peut-il être fait?

utilisateur184411
la source

Réponses:

2

Je crains qu'il n'y ait pas de solution simple à ce que vous essayez de faire.

  • cmd n’est pas très interactif et les scripts sont conçus pour être exécutés sans aucune attention humaine.
  • Une autre limitation réside dans le fonctionnement de l'UAC: un processus ne peut être élevé que lorsqu'il démarre; après le démarrage d’un processus, il dispose ou non de privilèges d’administrateur.
    Ainsi, dans votre cas, pour chaque commande pouvant potentiellement conduire à l'invite UAC, vous devez coder dans les deux sens: lorsque le script est autorisé à copier sans élévation et avec l'élévation.

Vous ne pouvez pas programmer l'élévation avec cmdsauf si vous disposez d'un outil supplémentaire qui gère l'altitude pour vous, puis continuez avec la commande qui a échoué avec des autorisations normales.


Si vous êtes d'accord avec le fonctionnement de Windows XP, la solution la plus simple consiste à exécuter votre script avec des privilèges d'administrateur.

Si le but de votre script est de copier un seul fichier et que c'est tout ce que le script fait, créer un utilitaire qui fonctionne bien avec le contrôle de compte d'utilisateur semble excessif.


Vous pouvez créer un raccourci, fichier .lnk, pour votre script. Ensuite, dans les propriétés du raccourci, sous l' onglet Raccourci , cliquez sur le bouton Avancé et cochez Exécuter en tant qu'administrateur . Cliquez deux fois sur OK pour enregistrer les modifications.

Lorsque vous cliquez sur ce raccourci, une invite UAC s'affiche pour le processeur de commandes Windows (car il exécute les .cmdfichiers).

Alexey Ivanov
la source
J'ai encore modifié la question, en essayant d'être plus clair, au cas où quelqu'un pourrait aider; mais @Alexey Ivanov: Je pense que vous avez bien expliqué que ce que je veux faire ne peut être fait. Je vais essayer le raccourci (fichier .lnk). Merci.
user184411
Le raccourci n'a pas fonctionné; Je vais essayer sudowin.
user184411
@ user184411 Comment le raccourci n'a-t-il pas fonctionné?
Alexey Ivanov
@ Alexey Ivanov: Je vous le dirai quand je reviendrai à mon ordinateur, au début d'octobre.
user184411
2

Vous devez ouvrir l'invite de commande en tant qu'administrateur.

  1. Ouvrez le gestionnaire de tâches en ouvrant la boîte de dialogue Exécuter (appuyez sur Win+ Rensemble) et en tapant taskmgr , ou en appuyant sur Ctrl+ Shift+ Esc.

  2. Cliquez sur Fichier -> Nouvelle tâche .

  3. Cochez la case Créer cette tâche avec des privilèges d'administrateur . Si vous ne le voyez pas, cela signifie que votre compte d'utilisateur est un compte standard, pas un compte d'administrateur. Comme vous pouvez cliquer sur l'invite UAC, je suppose que vous êtes un administrateur.

  4. Tapez cmd et cliquez sur OK. Vous devriez pouvoir exécuter votre commande de copie à partir de cette invite sans recevoir d'erreur d'erreur.

Vous pouvez également appuyer sur Win+ Xpour afficher le menu Utilisateur expérimenté, puis sélectionnez

menu utilisateur avancé

et sélectionnez Invite de commandes (Admin) à partir de là (ou appuyez sur A).

John Bensin
la source
J'ai édité la question et ajouté quelques détails pour montrer pourquoi ce n'est pas la réponse que je recherche.
user184411
1
@ user184411 On dirait que vous avez besoin d'un fichier de commandes. Placez votre commande de copie dans un fichier de commandes, puis exécutez-la en tant qu'administrateur.
John Bensin le