FileCreateShortcut ne fonctionne pas sous Windows 10 ?

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
corrs78
Niveau 5
Niveau 5
Messages : 142
Enregistré le : lun. 13 août 2007 16:38
Localisation : Yvelines
Contact :
Status : Hors ligne

FileCreateShortcut ne fonctionne pas sous Windows 10 ?

#1

Message par corrs78 » lun. 29 mai 2017 11:20

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

Avatar du membre
mimione
Niveau 4
Niveau 4
Messages : 84
Enregistré le : mer. 30 avr. 2008 17:11
Localisation : Bretagne
Status : Hors ligne

Re: FileCreateShortcut ne fonctionne pas sous Windows 10 ?

#2

Message par mimione » lun. 29 mai 2017 12:46

bonjour
Pas de soucis pour moi sous W10 pour créer un raccourci sur le bureau.
ça doit fonctionner...
m'enfin ?
Je ne suis pas toujours de mon avis....
--------------------------------------------
Des malheurs évités le bonheur se compose.

Avatar du membre
corrs78
Niveau 5
Niveau 5
Messages : 142
Enregistré le : lun. 13 août 2007 16:38
Localisation : Yvelines
Contact :
Status : Hors ligne

Re: FileCreateShortcut ne fonctionne pas sous Windows 10 ?

#3

Message par corrs78 » mar. 30 mai 2017 12:01

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.

Avatar du membre
orax
Modérateur
Modérateur
Messages : 1467
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Contact :
Status : Hors ligne

Re: FileCreateShortcut ne fonctionne pas sous Windows 10 ?

#4

Message par orax » mar. 30 mai 2017 13:42

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.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)

Avatar du membre
corrs78
Niveau 5
Niveau 5
Messages : 142
Enregistré le : lun. 13 août 2007 16:38
Localisation : Yvelines
Contact :
Status : Hors ligne

Re: FileCreateShortcut ne fonctionne pas sous Windows 10 ?

#5

Message par corrs78 » mar. 30 mai 2017 17: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.

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)

Avatar du membre
corrs78
Niveau 5
Niveau 5
Messages : 142
Enregistré le : lun. 13 août 2007 16:38
Localisation : Yvelines
Contact :
Status : Hors ligne

Re: FileCreateShortcut ne fonctionne pas sous Windows 10 ?

#6

Message par corrs78 » jeu. 22 juin 2017 15:18

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.

Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11325
Enregistré le : ven. 20 juil. 2007 20:00
Localisation : Bordeaux
Status : Hors ligne

Re: FileCreateShortcut ne fonctionne pas sous Windows 10 ?

#7

Message par Tlem » jeu. 22 juin 2017 19:26

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
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".

Avatar du membre
corrs78
Niveau 5
Niveau 5
Messages : 142
Enregistré le : lun. 13 août 2007 16:38
Localisation : Yvelines
Contact :
Status : Hors ligne

Re: FileCreateShortcut ne fonctionne pas sous Windows 10 ?

#8

Message par corrs78 » ven. 23 juin 2017 13:01

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.

Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11325
Enregistré le : ven. 20 juil. 2007 20:00
Localisation : Bordeaux
Status : Hors ligne

Re: FileCreateShortcut ne fonctionne pas sous Windows 10 ?

#9

Message par Tlem » ven. 23 juin 2017 17:57

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

Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".

Avatar du membre
orax
Modérateur
Modérateur
Messages : 1467
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Contact :
Status : Hors ligne

Re: FileCreateShortcut ne fonctionne pas sous Windows 10 ?

#10

Message par orax » ven. 23 juin 2017 19:02

corrs78 a écrit :
lun. 29 mai 2017 11:20
je les utilise depuis plusieurs années sous Win7 sans souci.
corrs78 a écrit :
mar. 30 mai 2017 17: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.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)

Avatar du membre
corrs78
Niveau 5
Niveau 5
Messages : 142
Enregistré le : lun. 13 août 2007 16:38
Localisation : Yvelines
Contact :
Status : Hors ligne

Re: FileCreateShortcut ne fonctionne pas sous Windows 10 ?

#11

Message par corrs78 » ven. 23 juin 2017 20:10

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).

caramen
Niveau 2
Niveau 2
Messages : 20
Enregistré le : mer. 03 juil. 2013 06:22
Status : Hors ligne

Re: FileCreateShortcut ne fonctionne pas sous Windows 10 ?

#12

Message par caramen » jeu. 18 oct. 2018 17:43

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.

Répondre