Page 1 sur 1

FileCreateShortcut ne fonctionne pas sous Windows 10 ?

Posté : lun. 29 mai 2017 12:20
par corrs78
Bonjour,
j'ai plusieurs scripts qui ajoutent des raccourci sur le bureau de mes users
je les utilise depuis plusieurs années sous Win7 sans souci. Sous Windows10 la fonction "FileCreateShortcut" parait boguée.
j'ai autoit version : 3.3.14.0

voici la syntaxe que j'ai toujours utilisée:
FileCreateShortcut(@ProgramFilesDir&"\Mozilla Firefox\firefox.exe", @DesktopCommonDir & "\MonRaccourci.lnk", @ProgramFilesDir&"\Mozilla Firefox", "http://www.google.fr", "Google","c:\ressources\google.ico")
sur windows 7 ça me renvoie "1" (raccourci créé avec succès)
sur windows 10 -> ça mouline quelques secondes et j'obtiens "0". (echec de creation de raccourci)

pour info, j'ai bien les droits d’écriture sur la destination.

une idée?

merci

Re: FileCreateShortcut ne fonctionne pas sous Windows 10 ?

Posté : lun. 29 mai 2017 13:46
par mimione
bonjour
Pas de soucis pour moi sous W10 pour créer un raccourci sur le bureau.
ça doit fonctionner...
m'enfin ?

Re: FileCreateShortcut ne fonctionne pas sous Windows 10 ?

Posté : mar. 30 mai 2017 13:01
par corrs78
J'ai meme essayé de mettre le chemin en dur "c:\users\Public\Desktop" ... rien n'y fait ça ne fonctionne pas.
Ce qui est curieux c'est que si j mets la variable @DesktopDir (au lieu de DesktopCommonDir) ça fonctionne correctement.

Re: FileCreateShortcut ne fonctionne pas sous Windows 10 ?

Posté : mar. 30 mai 2017 14:42
par orax
Le code suivant affiche l'erreur.

Code : Tout sélectionner

#include <WinAPI.au3>
FileCreateShortcut(@ProgramFilesDir&"\Mozilla Firefox\firefox.exe", @DesktopCommonDir & "\MonRaccourci.lnk", @ProgramFilesDir&"\Mozilla Firefox", "http://www.google.fr", "Google","c:\ressources\google.ico")
ConsoleWrite(_WinAPI_GetLastErrorMessage() & @CRLF) ; affiche "Accès refusé."
Il faudra ajouter #RequireAdmin au début du script pour écrire dans des dossiers qui nécessitent une élévation des droits.

Re: FileCreateShortcut ne fonctionne pas sous Windows 10 ?

Posté : mar. 30 mai 2017 18:35
par corrs78
Merci, je teste ça dès demain. Cela dit mes utilisateurs n'ont pas les droits d'admin,ils sont seulement utilisateurs avec pouvoirs. Par conte ils ont les droits d'écriture sur ce dossiers. C'est pourquoi je ne comprends pas la logique.

EDIT: comme je le craignait ce n'est pas possible car dès que je lance le script l'OS me demande de specifier un compte Admin.
Or, il faut que cela soit transparent sinon cela n'a plus d’intérêt. (parc de 500 machines)

Re: FileCreateShortcut ne fonctionne pas sous Windows 10 ?

Posté : jeu. 22 juin 2017 16:18
par corrs78
En fait ce sont tous mes scripts contenant des "RunAs" qui sont impactés sous Windows10.

j'ai bien trouvé une solution : desactiver l'UAC Winndows, sauf que cela a une incidence sur certaines app windows qui ne veulent plus se lancer dans ce mode (la calculatrice par exemple) voir : https://www.justegeek.fr/windows-10-des ... istrateur/

en gros c'est le chien qui se mort la queue. Si vous avez une idée je suis preneur.

Re: FileCreateShortcut ne fonctionne pas sous Windows 10 ?

Posté : jeu. 22 juin 2017 20:26
par Tlem
Bonsoir.
Ce n'est pas une limitation d'AutoIt, mais bel et bien un problème avec Windows ...
Essayez ce batch et vous verrez que même utilisateur avec des droits Admin, vous avez ce beau message d'erreur :

Code : Tout sélectionner

Cls

Echo Fichier de test>"%Public%\Desktop\test.txt"
Pause
Capture.JPG

Sur mon PC en Windows 10 Creator Update, voici mes droits sur le dossier Public\Desktop :
Capture2.JPG
Donc dans votre cas cela doit probablement être la même chose. la solution pour résoudre ce problème sans avoir à désactiver l'UAC est de modifier les droits d'écritures sur ce dossier ...
Moi j'ai rajouter le groupe "Tout le monde", mais vous pouvez aussi modifier les droits du ou des utilisateurs. Par contre, vous aurez nécessairement besoin des droits admin pour effectuer cette opération. ^^

Capture3.JPG


Edit : Je vous propose une solution de contournement qui devrait résoudre la totalités de vos problèmes de scripts nécessitants des droits élevés (enfin, je crois ...).

En supposant que votre parc soit sur le même réseau :
1 - Création ou utilisation d'un dossier (administratif) partagé en lecture seule.
2 - Création d'une tache Spéciale :
  1. Tache avec l'option "Exécuter avec les autorisations maximales".
  2. Déclencheur : "Au moment de la connexion à une session utilisateur" => C'est mieux pour certaines variables d'environnement. ^^
  3. Action : "Démarrer un programme" ===> \\Mon Partage\Dossier Administration\Script.exe

    En étudiant de près cette solution, vous pourrez faire des tas de choses sur la totalité des machines de votre parc sans avoir besoin de modifier les droits. ^^
    Vous pouvez aussi ajouter dans votre/vos scripts une gestion avancée du contrôle du nom de la machine afin de n'appliquer le script que sur une ou un groupe de machine.
    C'est le principe de la gestion des domaines, sans toucher les GPO. ^^

    Après, si les 500 machines ne sont pas dans le même réseau, vous pouvez envisager de passer par un lien direct vers un fichier hébergé ou un partage Dropbox ou similaire, mais la, il faudra étudier cela de près. :D

Re: FileCreateShortcut ne fonctionne pas sous Windows 10 ?

Posté : ven. 23 juin 2017 14:01
par corrs78
Merci Tlem,
j'aime beaucoup l'idée du cron, en effet je ne vois pas d'autre solution.
maintenant il faut que j'arrive à pousser cette tache planifiée sur mon parc (dans différents LAN)
Mais comme vous le dites mes scripts se chargent deja du tri en fonction du hostname ou de l'IP. pas de problème de ce coté.

Bon cela dit cela ne règle qu'à moitié mon problème, car la majorité des "scripts en tant que " que j'ai codé en autoit sont des interfaces graphiques utilisées ponctuellement par un "simple user". Dans ce cas le problème demeure

Cordialement.

Re: FileCreateShortcut ne fonctionne pas sous Windows 10 ?

Posté : ven. 23 juin 2017 18:57
par Tlem
Ben, il n'y a pas 50000 solutions.
Si votre script a besoin d'une élévation de droits pour exécuter une action (plus que ce qu'un utilisateur avec pouvoir peu avoir), a ma connaissance, il n'y a pas d'autre solution que de désactiver l'UAC .

Après, pour un cas particulier, j'ai fait un contournement tel que décrit précédemment pour lancer un programme qui nécessite une élévation de droits et affiche donc le prompt UAC. Une simple tâche avec pouvoir qui lance ce logiciel et le tour est joué. Par contre cela crée une potentielle faille de sécurité dans le cas où un utilisateur initié remplacerait l'exécutable d'origine par celui de son cru.
En affectant des droits spécifiques le problème est vite réglé, mais cela implique une bonne préparation. ^^

Concernant le problème du raccourci un simple changement de droit d'accès suffit. ^^

Envoyé de mon SM-N9005 en utilisant Tapatalk


Re: FileCreateShortcut ne fonctionne pas sous Windows 10 ?

Posté : ven. 23 juin 2017 20:02
par orax
corrs78 a écrit : lun. 29 mai 2017 12:20 je les utilise depuis plusieurs années sous Win7 sans souci.
corrs78 a écrit : mar. 30 mai 2017 18:35 Merci, je teste ça dès demain. Cela dit mes utilisateurs n'ont pas les droits d'admin,ils sont seulement utilisateurs avec pouvoirs. Par conte ils ont les droits d'écriture sur ce dossiers. C'est pourquoi je ne comprends pas la logique.
J'ai fait un essai sur Windows 7 avec l'UAC activé ; c'est pareil que sur que sur Windows 10 : quand on souhaite écrire un fichier dans le dossier C:\users\Public\Desktop, la fenêtre de l'UAC s'affiche parce qu'il y a besoin d'une élévation des droits. Cette fenêtre s'affiche même si l'utilisateur est dans le groupe Administrateurs.

Re: FileCreateShortcut ne fonctionne pas sous Windows 10 ?

Posté : ven. 23 juin 2017 21:10
par corrs78
Oui, je n'ai pas été clair, désolé, ce que j'ai oublié de dire c'est que sur mon parc de PC en Windows7 j'ai l'UAC de désactivé. Ceci n'a pas d'impacts sur les applications Windows. Contrairement à Windows10. Parc que je suis amené à migrer sous Windows10 et je n'ai pas d'autre choix que d'activer l' UAC sinon mes utilisateurs seront amputé de la barre de recherche (entre autre).

Re: FileCreateShortcut ne fonctionne pas sous Windows 10 ?

Posté : jeu. 18 oct. 2018 18:43
par caramen
Ce n'est pas un "problème" c'est tout a fait normal. Le common dir et commun et est utilisé pour créer les nouvelles sessions utilisateurs de l'ordinateur. Raison pour laquelle il faut des droits pour écrire sur ce dossier.

Le souci ici n'est pas que vous avez ou non les droits.
Le souci est est-ce que le script lui a les droits.

Il y a plusieurs solutions.

-Soit vous désactivez l'UAC & le behavior prompt.
$cUACDefaut = RegRead ( "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" , "EnableLUA" )
$cUACPromptDefaut = RegRead ( "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" , "ConsentPromptBehaviorAdmin" )
RegWrite ( "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System","EnableLUA" , "REG_DWORD" , "0" )
RegWrite ( "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System","ConsentPromptBehaviorAdmin" , "REG_DWORD" , "0" )
;Mon script ....
;Mon script ....
;On remet le système a son état par défaut.
RegWrite ( "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System","ConsentPromptBehaviorAdmin" , "REG_DWORD" , $cUACPromptDefaut )
RegWrite ( "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" , "EnableLUA" , $cUACDefaut  )
Meme histoire ici. HKEY_LOCAL_MACHINE nécessite des droits admin pour être modifié. Sauf que ici, si la session utilisé dispose de droits admin alors l'uac sera désactivé sans prompt. Et le script pourra s’exécuter correctement.

-Soit #RequireAdmin

C'est une gym du cerveau Win 10 et les droits.