Le fichier batch élevé ne peut pas accéder aux lecteurs réseau mappés

Je sais... cette question a déjà été posée plusieurs fois, mais pas d'une manière qui répond adéquatement à mon problème.

Pour faire court, j'ai eu des problèmes pour exécuter un fichier batch en tant qu'administrateur, ce qui a fini par changer les clés de registre qui nécessitaient des privilèges d'administrateur. J'apporte toutes mes autres modifications dans des fichiers batch séparés pour les clés qui ne nécessitent pas de droits d'administrateur. Lorsque j'ai couru en tant qu'administrateur, une fenêtre de commande s'est ouverte pendant une fraction de seconde, puis disparaître.

Comme décrit dans de nombreuses réponses, telles que celle-ci , j'ai activé le paramètre Enablelinkedconnections ; en fait, j'ai créé un autre script batch pour cela:

@echo off
reg add "HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionPoliciesSystem" /v "EnableLinkedConnections" /t REG_DWORD /d 0x00000001 /f
net stop LanmanWorkstation
net start LanmanWorkstation

Bien sûr, je n'ai pas pu exécuter ce script non plus . J'ai dû le copier sur l'ordinateur, puis l'exécuter en tant qu'administrateur. Cela a fonctionné, car il s'agissait essentiellement d'un paquebot qui ne faisait aucun appel à des scripts externes sur d'autres lecteurs mappés. Ennuyeux, mais je pourrais vivre avec ceci, si cela a fonctionné, ce qui n'a pas été le cas!

Dans une invite de commande élevée, la saisie de net use n'affichait aucune connexion, même après avoir redémarré l'ordinateur ( ce que je n'aurais pas dû faire car mon script a redémarré le service concerné). Mais je l'ai fait, et ça n'a toujours pas marché. J'ai ouvert manuellement l'éditeur de registre et confirmé que la modification avait été apportée.

Revenons à la recherche, et j'ai cherché "Les lecteurs mappés Windows 10 ne s'affichent même pas avec EnabledLinkedConnections".

La réponse liée ci-dessus indique:

Microsoft a reconnu un cas où EnableLinkedConnections ne fonctionnera pas. Cela se produira si l'UAC nécessite un mot de passe avant d'exécuter un programme élevé (c'est-à-dire en tant qu'administrateur).

Mais je sais que ce n'est pas le cas pour moi, car ce compte est déjà un compte administrateur. Pour exécuter quelque chose en tant qu'administrateur, comme le dictent les paramètres du mode d'approbation Administrateur par défaut, il me suffit de cliquer sur Oui / Non; je n'ai pas besoin d'entrer un mot de passe.

Auquel cas, le "bug" avec Enabledlinkedconnections ne devrait même pas s'appliquer à mon système. Pourtant, cela ne fonctionne pas.

J'ai beaucoup de choses à exécuter qui font référence à des chemins entièrement spécifiés (en commençant par la lettre de lecteur, comme Z:Scriptsetc...). Copier des scripts d'un emplacement réseau vers l'ordinateur pour les exécuter n'est pas du tout pratique.

Considérant que j'ai Enablelinkedconnections défini sur 1 et Je ne suis pas invité à entrer un mot de passe par UAC , en théorie, je ne devrais avoir aucun problème, mais mes emplacements réseau mappés n'apparaissent toujours pas à partir de l'instance élevée de mon compte.

Pourquoi est-ce, et comment puis-je le réparer?


Si c'est de l'aide, je viens de découvrir que si j'exécute manuellement certaines commandes par lots pour mapper des lecteurs, un mot de passe n'est pas requis comme dans le mappage initial. Le lecteur sera juste une carte. Ensuite, je peux fermer l'invite de commande élevée et en ouvrir une autre, et le mappage est toujours là. Cependant, je devais encore ouvrir manuellement cmd.exe en tant qu'administrateur pour accomplir cela; et il n'y a toujours pas de moyen élégant de s'assurer qu'il est mappé pour les deux jetons lorsque le script de connexion s'exécute, sauf si j'ai appelé la partie mappage deux fois.

Aussi, cela fait pas semblent être utiles, comme si lors de l'exécution de net use dans ce cas, je vois les lecteurs, mais rencontrez un message ERROR: Error opening the file. There may be a disk or file system error. chaque fois qu'un appel est effectué vers un autre script batch sur un lecteur mappé. Cela ne se produit pas dans les scripts non administrateurs ordinaires qui appellent d'autres fichiers, ni pour les commandes qui modifient directement les fichiers système sans utiliser de fichier d'aide enfant.

demandé sur