Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog

[W7] [W8] [file assoc] Corriger Association de fichier sous windows

Publié le par damcuvelier

Sous Windows 8

Depuis Windows 8, une nouveauté, on peut exporter/importer les règles d'association de fichier et les importer grace à DISM:

a) Export de la configuration

L'export de la configuration des extensions de fichier sous format XML se fait avec la commande suivante:
Dism.exe /Online /Export-DefaultAppAssociations:<votre fichier.xml>

b) Import de la configuration des extensions

L'import de la configuration des extensions de fichier sous format XML se fait avec la commande suivante:
Dism.exe /Online /Import-DefaultAppAssociations:<votre fichier.xml>

Très utile quand on veut fixer une expérience utilisateur à un choix de logiciel prédéfinit pour lancer des fichiers word, vidéo pdf...etc
Et surtout si on utilise plusieurs versions d'Office qui peuvent se prioriser sur les extensions au détriment d'une version que l'on veut imposer.
(Exemple: office2010 en appv sur une config office 2013 => C'est office2010 qui devient office par défaut alors qu'on veut office 2013...)

Sous Windows 7


Mais sous windows 7, comment on fait?

Pour changer une association de fichier, il y a uniquement 2 méthodes: avec la base de registre ou avec "assoc" et/ou "ftype"

Une solution qui n'en est pas une


1) avec la base de registre: extraire toutes les informations d'une extension et les changer puis réimporter dans la base de registre...
2) avec "assoc" et/ou "ftype", récupérer chaque l'extension et changer l'association...

Dans les 2 cas, un travail très fastidieux et on est pas sûr du résultat.
Et puis si on a plus de 100 extensions à gérer (cas office2010 en appv sur une config office 2013), c'est infaiable!

D'où, l'écriture par mes soins, d'un script qui fait le travail pour vous.
On lui indique la version dominante d'office et il va modifier toutes les associations de fichiers office et les rediriger vers la version choisie et exploitant "assoc" & "ftype".

Une vraie solution

Le script: (à enregistrer en script "fileassoc.vbe")

On error Resume Next

Rem Usage: cscript fileassoc.vbe /officeprincipal:<version principale d'office>
Rem Exemple pour office 2013: cscript fileassoc.vbe /officeprincipal:2013

dim Result,extension,newassoc
dim exeassocie,badexeassocie
Dim WshShell, oExec
Set WshShell = WScript.CreateObject("WScript.Shell")

'{{{{{{{{ debut script }}}}}}}}}}}}
newassociations
'{{{{{{{{ fin script }}}}}}}}}}}}

'fonctions

Rem Liste des versions:
Function nb
Rem nb = La version ciblée
Rem 8 = Office 97
if instr(Wscript.Arguments.Named("officeprincipal"),"97")>0 then
nb="8"
Rem 9 = Office 2000
elseif instr(Wscript.Arguments.Named("officeprincipal"),"2000")>0 then
nb="9"
Rem 10 = Office 2002 ou Office XP
elseif instr(Wscript.Arguments.Named("officeprincipal"),"2002")>0
or instr(lcase(Wscript.Arguments.Named("officeprincipal")),"xp")>0 then
nb="10"
Rem 11 = Office 2003
elseif instr(Wscript.Arguments.Named("officeprincipal"),"2003")>0 then
nb="11"
Rem 12 = Office 2007
elseif instr(Wscript.Arguments.Named("officeprincipal"),"2007")>0 then
nb="12"
Rem 14 = Office 2010
elseif instr(Wscript.Arguments.Named("officeprincipal"),"2010")>0 then
nb="14"
Rem 15 = Office 2013
elseif instr(Wscript.Arguments.Named("officeprincipal"),"2013")>0 then
nb="15"
end if
End Function


function newassociations
#@~^vgUAAA==@#@&?nDPK26m,xPq/4?4+ssc26^`r]mKhdwmuP&m~WDX2+rb@#@&fG~qtksn,1GY,GA6n1RUYN}ED bD2UN}0jOM+ls@#@&"+/!sOP{PK2a+^ UY[r!OR"+C[dkxn@#@&dr0,r    /OM`^mlk+v]+kEsY*~EG60k1nJ*@*!,O4+    @#@&dn6On    /rW    ~',/2sbY`]nkEsYBE{Jbv!*@#@&i+Xnlk/Gmb+~x,/w^rYvI+k;sYBJ{Jb`qb@#@&7xAlk/G^,'PnaD+U/bG    P',J{JPLPk2VbYc+X+CdkWmbn~rW06r^+r#v!bP'~rWW0b^+rP'~    4P'~r-EPL~kwsbYv/w^kDc+X+C/kW^r~JKW0bm+rbcF*~r-E#cq*@#@&d@#@&dEZG.M+mOrKx~NE;    +~sl!\lb/~wMkd+,+U~1tlML+,N+k~^t:bxdP[;,Yzw~J;)wKMWo.CsPok^nk-Yr)@#@&db0,rxkY.`    +ACk/W1Sm4D`2*b[1tM`fcb'1t.`2*#Lm4.v&cb'1t.`2**#@*ZPDt+    @#@&7xhC/kW^~{PD2Vmm+vUnhm/kW^~^4M`fc*'m4DcfW#[^4M`fc*'1t.v&W#[1tMc&W#Sm4DcfW##@#@&dV/rWPbxkY.`UnSld/K^~1t.c2c#'^4Dc&WbLm4M`2c#Lm4.`2cb#@*!~O4+x@#@&d    +hmddW1P{P.+2smmn`    nhm/dG1~m4.v&*#L^4Dc2c*[m4Dvfc*[^tM`f**~m4.`2c#*@#@&dVk+r0~r    /ODvU+SlddKm~^4M`fc*'1t.v&W#[1tMc&W#b@*ZPO4x@#@&7xhlkdGm,',DnwsC1+cxAlk/G^Bmt.c2cb[14M`fW#LmtM`2*#Bm4Dv&*b*@#@&inVk+k6~rxkYM`U+ACk/GmB^tM`f**[m4.v&*#*@*ZPO4+    @#@&ixAlk/Gm,'~.wVm^+vx+SCd/KmBm4DcfW#'m4.`2cbS1tDcfW#b@#@&7x[,k6@#@&@#@&ir0,jmMk2OcbDT;:xYk Hls+9R36rdD/cJ7r+SJb~Dt+U@#@&dA/1.bwOc+1tW,J    nhm/dW1Px@*,JPL~xhlkdGm@#@&i+s/nr6P    ?1.kaY )MoEhn    YdRgCs+[c2Xk/D/vEN4;or#~O4+x@#@&dih/1.rwDRm4W~E    +AlkdW1Px@*,JP'~    +AlkdKm@#@&di/4?4nV^R36mcEumWsdwm],&^Pm/kW^PE~LPU+SC/kW^b@#@&d7    ktjts^R3X+1`JumKh/a+^],z^~6YXanPrP[,Unhm/kW^#@#@&i+s/@#@&id    d4?tns^R36^vJY1Ws/wmu~z1PC/kW^~rP[,U+Sl/kG^#@#@&id    /4j4+sVc36mcEumWhda+^],&1PWDXa+PrPL~xhC/kW^b@#@&dUN,k0@#@&7d@#@&idnx[~b0@#@&dGWa@#@&h64BAA==^#~@
wscript.quit
end function

PS: il est compatible windows xp ;)

enjoy!

Commenter cet article

D
Meme message, erreur ligne 21.<br /> <br /> Ca ne marche pas...
Répondre
D
OK. Désolé tous. Ça fait un an que je suis full vmware / powercli. Je vais voir si j' ai toujours mon code source pour corriger. @+
M
Bonjour,<br /> <br /> J'ai l'impression que la fonction newassociations n'est pas correcte, tous est codé, il n'y a même pas d'appel à la fonction nb.<br /> Es-ce un bug d’affichage de mon coté?<br /> Merci d'avance.
Répondre
M
Bonjour,<br /> Merci pour votre article qui est très intéressant.<br /> Par contre je n'arrive pas a faire marcher votre script vbe.<br /> J'ai le message d'erreur suivant : fileassoc.vbe(21, 60) Erreur de compilation Microsoft VBScript: 'Then' attendu.<br /> Une idée?<br /> Merci
Répondre
M
Bonjour,<br /> Je viens d'essayer votre mise à jour mais cela ne marche toujours pas...<br /> J'ai le même erreur.
D
Je viens de mettre à jour