RUNAS "en tant que" + chemin réseau avec espaces + fichier Excel avec caractères spéciaux

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
vireden
Niveau 1
Niveau 1
Messages : 2
Enregistré le : dim. 01 oct. 2017 15:37
Status : Hors ligne

RUNAS "en tant que" + chemin réseau avec espaces + fichier Excel avec caractères spéciaux

#1

Message par vireden »

Bonjour à tous et à toutes,

Je vais vous exposer un problème que j'ai rencontré avec ma console AutoIT et qui m'a posé des problèmes pendant une semaine.
Après, je sais que ce n'est pas la meilleur solution mais je pense qu'il aidera ceux et celles qui rencontreront ce problème.

Problème rencontré : Vous devez consulter un fichier Excel sur le réseau. Le chemin d'accès se trouve dans le fichier "Configuration.ini". Ce fichier comporte des caractères spéciales et de plus, le chemin réseau comporte des espaces. Votre service vous attribue dernièrement des droits AD avec votre compte informatique dans le cadre d'une fusion avec une autre équipe (vive les évolutions ^^). Votre console fonctionnait correctement en utilisant un bouton d'accès jusqu'à ces droits (Grrr). Pour utiliser votre fichier Excel (Ex : Valideurs.xlsx), vous devez utiliser votre compte ADM.

Solution appliquée :
- Ne pas changer le bouton dans AutoIT.
- Utiliser un fichier .bat en comprenant la variable chcp 28591 > nul.
Pourquoi cette variable ? Si vous ne l'utilisez pas, il ne trouvera pas correctement votre fichier Excel. Vous aurez à la place d'un "é" un "Ú" par exemple.
Nous utiliserons la commande RUNAS avec votre compte ADM pour lancer Excel et executer le fichier Valideurs.xlsx
- Renommer le chemin dans la fichier Conguration.ini qui lancera le fichier .bat au lieu du fichier Valideurs.xlsx

============ DEBUTS DES SCRIPTS ============

============ FICHIER main_gui3 : fichier de lancement de votre console ============

Code : Tout sélectionner

;----- Include GUI -----
#include <variables.au3>
#include <include\gui\outils_incidents.au3>

; Déclaration pour utiliser un bouton qui s’appellera "Valideurs". La commande ci-dessous sera lancée dans include\gui\outils_incidents.au3
Case $button_synoptique_valideurs
		 Call(_Open_Synoptique_valideurs())
============ FICHIER variables.au3 : fichier qui comporte toutes les variables et qui utilisera le fichier Configuration .ini============

Code : Tout sélectionner

...
Global $informations_SynoptiqueValideurs = Iniread("configuration.ini","INFORMATIONS","SynoptiqueValideurs","error")
...
============ FICHIER include\gui\outils_incidents.au3 : interface graphique de votre bouton Valideurs============

Code : Tout sélectionner

; interface graphique où se trouve votre bouton qui marchait jusqu'à maintenant
Func _outils_incidents()
Global $tab_outils_incidents 	= GUICtrlCreateTabItem("Outils Incidents")
Global $button_synoptique_valideurs 	= GUICtrlCreateButton("Valideurs", 17, 64, 85, 25)
	  GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
	  GUICtrlSetColor(-1, 16777215)
	  GUICtrlSetBkColor(-1, 0xCC9933)
EndFunc
============ FICHIER .BAT -> Valideurs.BAT ============

Code : Tout sélectionner

REM C:\Program Files (x86)\Microsoft Office\Office14 = Suite Microsoft Office 2010 installé sur les postes du service
REM C'est dans ce fichier .BAT que votre responsable si le fichier Excel change (Ex: Valideurs.xlsx)
chcp 28591 > nul
Set Valideurs="\\Chemin réseau avec espaces\Fichier Excel avec espaces et caractères spéciaux.xlsx"
cd C:\Program Files (x86)\Microsoft Office\Office14
%windir%\system32\runas.exe /user:mon domaine\%username%_ADM /savecred "\"C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE\" \%Valideurs%\"
============ FICHIER Function_outils_incidents.au3 ============

Code : Tout sélectionner

; Synoptique Valideurs
Func _Open_Synoptique_Valideurs()
                ; cette fonction va lancer un fichier .bat qui va lancer une commande RUNAS avec le compte _ADM et aller chercher le fichier Excel des valideurs – restrictions de droits
                ShellExecute($informations_SynoptiqueValideurs)
EndFunc
============ FICHIER Configuration.ini ============

Code : Tout sélectionner

[INFORMATIONS]
SynoptiqueValideurs="\\Chemin réseau où se trouve votre script .bat\Valideurs.BAT"

============ FIN DES SCRIPTS ============

--> Voilà cette solution fonctionne bien.

Alors pour certains ou certaines, j'ai essayé la commande suivante dans le fichier Function_outils_incidents.au3 mais je me suis trouvé bloqué au problème des caractères spéciaux du fichier Excel. Et bien sur, je ne dois pas modifier la fonction qui fait appel à $informations_SynoptiqueValideurs

Code : Tout sélectionner

; Synoptique Valideurs
Func _Open_Synoptique_Valideurs()
                ; cette fonction va lancer un fichier .bat qui va lancer une commande RUNAS avec le compte _ADM et aller chercher le fichier Excel des valideurs – restrictions de droits
                ; $LoginUserConsole = @USERNAME + "_ADM"
                ShellExecute("cmd","/c chcp 28591 > nul runas /savecred /user:commun\" & $LoginUserConsole & " ""C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE " & $informations_SynoptiqueValideurs & "", @WindowsDir))
EndFunc
Si une personne trouve une variante à cette solution, je suis preneur ^^

Cordialement.

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

Re: RUNAS "en tant que" + chemin réseau avec espaces + fichier Excel avec caractères spéciaux

#2

Message par Tlem »

Bonsoir vireden.
vireden a écrit : dim. 01 oct. 2017 17:03 ; cette fonction va lancer un fichier .bat qui va lancer une commande RUNAS avec le compte _ADM et aller chercher le fichier Excel des valideurs – restrictions de droits
Dans ce cas, il faut aller à l'essentiel :

Code : Tout sélectionner

#Require admin

ShellExecute("C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE", "\\Chemin réseau avec espaces\Fichier Excel avec espaces et caractères spéciaux.xlsx", "", "open")
et plus simplement :

Code : Tout sélectionner

#Require admin

ShellExecute("\\Chemin réseau avec espaces\Fichier Excel avec espaces et caractères spéciaux.xlsx", "", "", "open")
Et si votre script de base ne doit pas avoir les droits Admin, alors vous avez cette alternative :

Code : Tout sélectionner

#pragma compile(AutoItExecuteAllowed, True)	; A rajouter en début de script

; Synoptique Valideurs
Func _Open_Synoptique_Valideurs()
    ; cette fonction va lancer un fichier .au3 qui va demander les droits admin pour lancer le fichier Excel – restrictions de droits
	Local $sFileValidateurs = @TempDir & '\Valideurs.au3'
	FileWrite($sFileValidateurs, '#RequireAdmin' & @CRLF & 'ShellExecute("\\Chemin réseau avec espaces\Fichier Excel avec espaces et caractères spéciaux.xlsx", "", "", "open")')

	RunWait('"' & @ScriptFullPath & '" /AutoIt3ExecuteScript "' & $sFileValidateurs & '"')
	FileDelete($sFileValidateurs)
EndFunc
Il y a encore "d'autres solutions", mais on verra en fonction des barrières que vous mettrez. ^^
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é".
Répondre