Initialisation

This commit is contained in:
2024-01-07 10:02:35 +01:00
commit b7291133a3
4418 changed files with 169147 additions and 0 deletions

View File

@@ -0,0 +1,90 @@
====== MS Windows ======
{{ informatique:se:ms-windows:ms-windows-31-logo.png?75x75|mes notes sur Microsoft Windows}}
===== - Windows 10 : et si on le remplaçait ? =====
Depuis 2015, avec le déploiement du nouveau **Windows 10**, on voit fleurir des tutoriaux et guide pour passer de nouveau sur **Windows 8**, **Windows 8.1** voir **Windows 7** :
* Windows 10, Comment rétrograder son PC vers Windows 7 ou Windows 8.1 ?
* Les 10 bonnes raisons de ne pas passer à Windows 10
* Désinstaller Windows 10 et revenir à Windows 7 ou 8.1
* ...
Les raisons sont divers et multiples, voir même justifiées.
<WRAP group>
<WRAP quarter column>
[[http://www.monwindowsphone.com/blog/windows-10--la-disparition-de-qmessaging-everywhereq-ne-plait-pas-aux-insiders-t110995.html|{{ informatique:se:ms-windows:no_thanks_windows_10.jpg?100 |}}]]
<WRAP center round box 60%>
**Windows 10** ne vous plaît pas forcément
[[http://www.monwindowsphone.com/blog/windows-10--la-disparition-de-qmessaging-everywhereq-ne-plait-pas-aux-insiders-t110995.html|lire cet article...]]
</WRAP>
</WRAP>
<WRAP quarter column>
[[http://www.ginjfo.com/actualites/logiciels/windows-10/windows-10-est-lent-plusieurs-solutions-20150905|{{ informatique:se:ms-windows:windows_slow.png?100 |}}]]
<WRAP center round box 60%>
**Windows 10** est trop lent sur votre ordinateur
[[http://www.ginjfo.com/actualites/logiciels/windows-10/windows-10-est-lent-plusieurs-solutions-20150905|lire cet article...]]
</WRAP>
</WRAP>
</WRAP>
* Les outils associés à **Windows 10** ne vous satisfait pas : OneDrive, Edge
* Certains outils disparaissent avec **Windows 10** : Gadget, Internet Explorer, Windows Media Center
* **Windows 10** effectue beaucoup trop de mises à jour
* **Windows 10** intègre des mises à jour bancales et incontrôlables - [[http://www.01net.com/actualites/windows-10-microsoft-en-a-vraiment-apres-vos-donnees-1027949.html|Votre webcam ne fonctionne plus avec Windows 10 Anniversaire]]
* Une licence Retail **Windows 10** coûte trop chère (135,00 € TTC sur [[https://www.microsoftstore.com/store/msfr/fr_FR/pdp/Windows-10-Famille/productID.320445700|Microsoft Store]])
* Le licence ''Mise à jour'' ou ''OEM'' ne vous convient pas. Il sera nécessaire d'acheter une nouvelle licence si vous changer de carte mère ou de processeur.
* Le type de licence ''Mise à jour'' pour Windows 10, associé à l'ordinateur ne vous convient pas - [[http://lecrabeinfo.net/tout-savoir-sur-les-licences-windows-retail-oem-vl-cle-produit.html|+ d'infos sur les licences]]
* Avec **Windows 10**, Microsoft modifie a volonté les paramètres et politiques appliquées au programmes installés sur votre ordinateur - [[http://www.presse-citron.net/windows-10-va-t-il-bloquer-les-jeux-ou-les-logiciels-crackes/|Microsoft va-t-il pouvoir bloquer les versions crackées de jeux ou de logiciels ?]]
* Windows 10 collecte des informations sur votre ordinateur - [[http://www.01net.com/actualites/windows-10-microsoft-en-a-vraiment-apres-vos-donnees-1027949.html|Windows 10 : Microsoft en a vraiment après vos données]]
* Vous ne pouvez pas installer **Windows 10** car le programme d'installation le refuse
**Marre de Windows ? Passez sur Fedora**
<WRAP center round box 60%>
[[informatique:fedora_installer_linux|{{ informatique:se:ms-windows:free_fedora_linux_red.jpg?300 |}}]]
<WRAP center round tip 60%>
[[informatique:fedora_installer_linux|Suivez les guides Fedora...]]
</WRAP>
</WRAP>
===== Table des matières =====
<WRAP clear/>
<WRAP group>
<WRAP half column>
==== Les pages ====
<nav stacked="true" fade="true">
<nspages . -h1 -nbCol=1 -textNS=" " -textPages=" " -simpleList -exclude:cookie: -exclude:user: -exclude:playground: -exclude:[sidebar index start rightsidebar navbar topheader header help pageheader pagefooter legal-notices footer 404]>
</nav>
</WRAP>
<WRAP half column>
==== Les sous-catégories ====
<nav stacked="true" fade="true">
<nspages . -h1 -nbCol=1 -noPages -subns -textNS=" " -textPages=" " -simpleList -exclude:cookie: -exclude:user: -exclude:playground: -exclude:[sidebar index start rightsidebar navbar topheader header help pageheader pagefooter legal-notices footer 404]>
</nav>
</WRAP>
</WRAP>
~~NOTOC~~
~~NOCACHE~~

View File

@@ -0,0 +1,375 @@
====== Récupérer la clé produit Microsoft Windows ======
Un petit script permet de récupérer les informations concernant votre licence.
Copier ce code dans un fichier **viewpk.wsf**. L'extension du fichier est importante.
<code VBS viewpk.wsf>
<job>
<runtime>
<description author="jcb">
---------------------------------------------------------------------
Ce script en ligne de commande détermine, à partir des clefs
"...\...\DigitalProductID", la valeur de la "ProductKey"
(clef de produit) sous la forme 5x5 :
xxxxx-xxxxx-xxxxx-xxxxx-xxxxx
Chaque caractère fait partie de l'ensemble BCDFGHJKMPQRTVWXY2346789
Par défaut il examine le "DigitalProductID" de Windows, mais il est
capable de trouver et analyser ces clefs pour tous les produits Microsoft.
(Office, FrontPage, Visio, ...)
Ce script affiche aussi la "RAWkey" correspondante (valeur binaire,
exprimée en hexadécimal, en notations "little endian" et "big endian")
Inversement, il sait aussi convertir une RAWKey en ProductKey.
Enfin il sert à calculer (partiellement) le ProductID à partir
de la ProductKey ou de la RAWkey.
JCB © 2005
---------------------------------------------------------------------
</description>
<named name = "c"
helpstring = "Nom NetBIOS d'ordinateur
Si ce paramètre est absent, on retient l'ordinateur local"
type = "string"
many="false"
required = "false" />
<named
name = "e"
helpstring = "Commutateur indiquant le type de l'entrée :
R : clef de la branche HKLM de la base de registres (software\...)
(valeur par défaut)
T : Recherche de toutes les clefs 'DigitalProductID'
P : ProductKey
HL : chaine hexadécimale de ProductKey (RAW key)
en notation Little Endian (octets de poids faibles en 1ers)
HB : chaine hexadécimale de ProductKey (RAW key)
en notation Big Endian (octets de poids forts en 1ers)"
type = "string"
required = "false" />
<unnamed name = "v"
helpstring = "Suivant la valeur du commutateur précédent
- clef de la branche HKLM
NB: ne pas indiquer ni le préfixe (HKLM)
ni le nom de l'entrée (DigitalProductID)
(à encadrer par des guillemets si le nom contient des espaces)
Si ce paramètre est absent, on retient la clef :
\SOFTWARE\Microsoft\Windows NT\CurrentVersion
- ProductKey sous la forme xxxxx-xxxxx-xxxxx-xxxxx-xxxxx
- chaine hexadécimale (RAW Key)"
type = "string"
many="false"
required = "false" />
<example>
Exemples :
----------
viewpk
affiche la ProductKey de Windows
viewpk /e:T /c:GRANDBASSAM
affiche les ProductKey de tous les produits Microsoft
installés sur l'ordinateur "GRANDBASSAM"
viewpk /c:SASSANDRA /e:R "SOFTWARE\Microsoft\Office\11.0\Registration\{9017040C-6000-11D3-8CFE-0150048383C9}"
affiche la ProductKey de FrontPage 2003 sur l'ordinateur "SASSANDRA"
viewpk /e:HL 8063EFA7DE99C873A76B9F97FCD303
affiche la ProductKey à partir de cette chaine Little Endian
viewpk /e:P FCKGW-RHQQ2-YXRKT-8TG6W-2B7Q8
affiche la RAWKey à partir de cette ProductKey
Dans tous les cas, il est affiché :
- la RAWKey en notation Little Endian
- la RAWKey en notation Big Endian
- les 2 nombres centraux du productID
(algorithme valable seulement pour Windows)
---------------------------------------------------------------------
</example>
</runtime>
<script language="VBScript">
const HKEY_LOCAL_MACHINE = &H80000002
CharSet24 = array("B","C","D","F","G","H","J","K","M","P","Q","R","T","V","W","X","Y","2","3","4","6","7","8","9")
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
' 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 13 14 15 16 17
Prefix="HKLM\"
KeyDef="software\Microsoft\Windows NT\CurrentVersion"
Entry1="DigitalProductId"
Entry2="ProductID"
Entry3="ProductName"
SW_SHOWNORMAL=1
Dim shell, fso, net, args, Buffer, PK(25),Result(15), Key
Set shell = WScript.CreateObject("WScript.Shell")
Set net = Wscript.CreateObject("WScript.Network")
Set args = Wscript.Arguments
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
nbargs=args.count
TestHost false
Set Named = WScript.Arguments.Named
Set UnNamed = WScript.Arguments.UnNamed
nu=UnNamed.count
If named.Exists("c") Then Computer=lcase(named.Item("c")) else Computer=lcase(net.ComputerName)
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & Computer & "\root\default:StdRegProv")
On Error Resume Next
job="r"
If named.Exists("e") Then job=lcase(named.Item("e"))
Select Case job
'Analyse clef BDR
Case "r"
BDR=true
If nu=0 Then Key=KeyDef else Key=UnNamed(0)
coderet=oReg.GetBinaryValue(HKEY_LOCAL_MACHINE, Key, Entry1, Buffer)
If CodeRet<>0 Then
Wscript.echo "Erreur BDR"
Wscript.quit
End If
For index = 0 to 14
PK(index)=Buffer(index+&H34)
Next
PrintResult
'Enumération de toutes les clefs
Case "t"
On error goto 0
BDR=true
rep=shell.Popup("Veuillez patienter SVP." & VBCRLF & "La recherche des clefs peut prendre un certain temps", _
3, "Clefs de produits Microsoft sur " & Computer,65)
If rep=2 Then Wscript.quit
ExploreKey("Software\Microsoft")
'Analyse de RAWKey ou ProductKey
Case "hl","hb","p"
BDR=false
If nu=0 Then
WScript.Arguments.ShowUsage
WScript.Quit
end if
Key=UnNamed(0)
Select Case job
'Little Endian
Case "hl"
i1=0
i2=14
s=1
'Big Endian
Case "hb"
i1=14
i2=0
s=-1
Case "p"
End Select
If job<>"p" Then
'RAWKey
j=0
For index = i1 To i2 Step s
Sbyte="&H" & Mid(Key,index*2+1,2)
PK(j)=CInt(Sbyte)
j=j+1
Next
PrintResult
Else
'ProductKey
j=0
For index = 1 To len(Key)
' conversion des caractères en base24
v=valueB24(Mid(Key,index,1))
If v>=0 Then
PK(j)=v
j=j+1
End If
Next
If j<>25 Then
WScript.Arguments.ShowUsage
WScript.Quit
End If
' conversion en binaire
For i = 0 To 14
Result(i)=0
Next
NumDigits=24
ResLen=15
For i= 0 To 24
Aux=PK(i)
m=0
Do
Aux=Result(m)*NumDigits + Aux
Result(m)= Aux AND 255
m=m+1
Aux=int(Aux/256)
Loop Until m >= ResLen
Next
For i = 0 To 14
PK(i)=Result(i)
Next
PrintResult
End If
Case else
WScript.Arguments.ShowUsage
WScript.Quit
End Select
Wscript.quit
'--------------------------------------------------------------------
'Exploration récursive de la BDR
'recherche des entrées "DigitalProductId"
Sub ExploreKey(CurKey)
coderet=oReg.GetBinaryValue(HKEY_LOCAL_MACHINE,CurKey,Entry1,Buffer)
If CodeRet=0 Then
'Entrée trouvée. Extraction RAWKey
For index = 0 to 14
PK(index)=Buffer(index+&H34)
Next
Key=CurKey
PrintResult
Exit Sub
end if
Dim arrSubKeys
'Enumération des sous-clefs
coderet=oReg.EnumKey(HKEY_LOCAL_MACHINE,CurKey,arrSubKeys)
If codeRet=0 Then
If IsArray(arrSubKeys) Then
For Each subkey In arrSubKeys
ExploreKey(CurKey & "\" & subkey)
Next
End If
end if
End Sub
'--------------------------------------------------------------------
Sub PrintResult
RAWKeyBE=""
RAWKeyLE=""
'Affichage des RAWkeys en Little Endian et en Big Endian
For index = 0 to 14
RAWKeyBE=hexa(PK(index)) & RAWKeyBE
RAWKeyLE=RAWKeyLE & hexa(PK(index))
Next
S=""
'Calcul du ProductID (algorithme valable seulement pour Windows)
For index = 0 To 3
CurByte=PK(Index)
If index = 3 Then CurByte=CurByte and &H7F
S=Hexa(CurByte) & S
next
PID=int(("&H" &S) /2)
SPID=CStr(PID)
While len(SPID)<9
SPID="0" & SPID
Wend
SPID1=left(SPID,3)
SPID2=mid(SPID,4)
sigma=0
For i = 1 To len(SPID2)
sigma=sigma+Asc(mid(SPID2,i,1))-48
Next
m=7-sigma mod 7
SPID=SPID1 & "-" & SPID2 & m
'Conversion RAWKey en ProductKey
S=""
For i = 24 To 0 Step -1
r = 0
For j = 14 To 0 Step -1
r = r * 256 Xor PK(j)
PK(j) = Int(r/24)
r = r Mod 24
Next
S=CharSet24(r) & S
If i Mod 5 = 0 And i <> 0 Then S="-" & S
Next
msg=VBCRLF
If BDR Then msg=msg & "HKLM\" & Key & "\" & Entry1
msg=msg & VBCRLF & "ProductKey = " & S
msg=msg & VBCRLF & "RAWKey Big Endian = " & RAWKeyBE
msg=msg & VBCRLF & "RAWKey Little Endian = " & RAWKeyLE
' Calcul du ProductID (central)
' NB : valable seulement pour Windows, l'algorithme semblant
' être différent pour les autres produits
msg=msg & VBCRLF & "ProductID calculé = " & "xxxxx-" & SPID & "-xxxxx"
If BDR Then
coderet=oReg.GetStringValue(HKEY_LOCAL_MACHINE, Key, Entry2, SPID)
If Coderet=0 Then msg=msg & VBCRLF & "ProductID BDR = " & SPID
coderet=oReg.GetStringValue(HKEY_LOCAL_MACHINE, Key, Entry3, SPID)
If Coderet=0 Then msg=msg & VBCRLF & "ProductName = " & SPID
End If
Wscript.echo msg
End Sub
'--------------------------------------------------------------------
'Affichage hexadécimal d'un octet avec 0 non significatif éventuel
Function hexa(n)
ch=hex(n)
If len(ch)<2 then ch="0" & ch
hexa=ch
End Function
'--------------------------------------------------------------------
Function valueB24(c)
valueB24=-1
c=ucase(c)
For i = 0 To 23
If c=CharSet24(i) Then
valueB24=i
exit for
End If
Next
End Function
'--------------------------------------------------------------------
'Sous-programme de test du moteur
'Vu les sorties générées, c'est CSCRIPT (et non pas WSCRIPT)
'qui doit être utilisé de préférence
Sub TestHost(force)
dim rep
strappli=lcase(Wscript.ScriptFullName)
strFullName =lcase(WScript.FullName)
i=InStr(1,strFullName,".exe",1)
j=InStrRev(strFullName,"\",i,1)
strCommand=Mid(strFullName,j+1,i-j-1)
if strCommand<>"cscript" then
If force then
Init="Ce script doit être lancé avec CSCRIPT"
Else
Init="Il est préférable de lancer ce script avec CSCRIPT"
End If
rep=MsgBox(Init & VBCRLF & _
"Cela peut être rendu permanent avec la commande" & VBCRLF & _
"cscript //H:CScript //S /Nologo" & VBCRLF & _
"Voulez-vous que ce soit fait automatiquement?", _
vbYesNo + vbQuestion,strappli)
if rep=vbYes then
nomcmd="setscript.bat"
Set ficcmd = fso.CreateTextFile(nomcmd)
ficcmd.writeline "@echo off"
ficcmd.writeline "cscript //H:CScript //S /Nologo"
ficcmd.writeline "pause"
params=""
For i = 0 To nbargs-1
params=params & " " & args(i)
next
ficcmd.writeline chr(34) & strappli & chr(34) & params
ficcmd.writeline "pause"
ficcmd.close
shell.Run nomcmd, SW_SHOWNORMAL,true
force=true
end if
If force then WScript.Quit
end if
end sub
'--------------------------------------------------------------------
</script>
</job>
</code>
Dans une fenêtre DOS, positionnez vous dans le dossier où le fichier **viewpk.wsf**, puis exécutez la commande :
<code DOS>
cscript viewpk.wsf
</code>
Le résultat devrait de la forme suivante :
<code DOS>
ProductKey = FXXXP-4DFJD-GXXX9-VJXX7-HXXX2
RAWKey Big Endian = 00D62D7BA2A0036A00BF64300C49D9
RAWKey Little Endian = 0049FC396000236A83A0027B2DD600
ProductID calculé = xxxxx-486-4100400-xxxxx
ProductID BDR = 00400-OEM-0092002-00006
ProductName = Windows 7 Ultimate
</code>
===== + d'infos =====
* [[http://jc.bellamy.free.fr/fr/systeme.html#clefsproduitsMS]]

View File

@@ -0,0 +1,67 @@
====== Mode Entreprise et liste des sites en mode Entreprise ======
{{ :informatique:pasted:20220415-124621.png?75x75}}
===== Informations concernant Microsoft Edge Entreprise =====
Le mode Entreprise, mode de compatibilité qui sexécute sur Internet Explorer 11 sur les appareils Windows 10, Windows 8.1 et Windows 7, permet dafficher des sites web à laide dune configuration de navigateur modifiée conçue pour émuler Windows Internet Explorer 7 ou Windows Internet Explorer 8. Lexécution dans ce mode permet déviter la plupart des problèmes de compatibilité courants associés aux applications web écrites et testées sur des versions antérieures dInternet Explorer.
De nombreux clients identifient la compatibilité des applications web comme un coût élevé de mise à niveau, car les applications web doivent être testées et mises à niveau avant dadopter un nouveau navigateur. La compatibilité améliorée fournie par le mode Entreprise contribue à donner aux clients la confiance nécessaire pour passer à Internet Explorer 11, leur permettant ainsi de bénéficier de normes Web modernes, de performances accrues, dune sécurité améliorée et dune fiabilité supérieure.
https://docs.microsoft.com/fr-fr/internet-explorer/ie11-deploy-guide/what-is-enterprise-mode
===== Page de téléchargement de Microsoft Edge Entreprise =====
https://www.microsoft.com/fr-fr/edge/business/download
===== Mode Entreprise et liste des sites en mode IE11 Internet Explorer 11 =====
Le mode Entreprise est une fonctionnalité d'Internet Explorer 11 qui permet aux entreprises de configurer et de gérer les paramètres de navigation de leurs employés sur Internet Explorer. Cette fonctionnalité permet aux entreprises de s'assurer que tous leurs employés utilisent les mêmes paramètres de navigation et les mêmes versions de navigateur, ce qui peut aider à réduire les problèmes de compatibilité.
En ce qui concerne la liste des sites en mode IE11, cela dépend de la configuration spécifique de l'entreprise. Les entreprises peuvent choisir de configurer leurs ordinateurs pour que tous les sites Web soient automatiquement ouverts en mode IE11, ou elles peuvent choisir de configurer des sites Web spécifiques pour qu'ils soient ouverts en mode IE11.
Si vous êtes un employé et que vous rencontrez des problèmes avec un site Web en utilisant Internet Explorer 11, il est possible que ce site Web ne soit pas configuré pour fonctionner correctement en mode IE11. Dans ce cas, vous pouvez essayer d'utiliser un autre navigateur, tel que Google Chrome ou Mozilla Firefox, qui peuvent être plus compatibles avec le site Web en question.
Si vous êtes un administrateur système ou informatique, vous pouvez configurer les paramètres de mode Entreprise pour Internet Explorer 11 en utilisant l'outil de stratégie de groupe ou en modifiant les paramètres de registre sur les ordinateurs de votre entreprise. Vous pouvez également consulter la documentation officielle de Microsoft pour obtenir des instructions détaillées sur la configuration du mode Entreprise et la gestion des sites en mode IE11.
Fichier XML de la liste des sites
<code XML>
<site-list version="205">
<!-- File creation header -->
<created-by>
<tool>EnterpriseSiteListManager</tool>
<version>10586</version>
<date-created>20150728.135021</date-created>
</created-by>
<!-- Begin Site List -->
<site url="www.cpandl.com">
<compat-mode>IE8Enterprise</compat-mode>
<open-in>IE11</open-in>
</site>
<site url="www.woodgrovebank.com">
<compat-mode>Default</compat-mode>
<open-in>IE11</open-in>
</site>
<site url="adatum.com">
<compat-mode>IE7Enterprise</compat-mode>
<open-in>IE11</open-in>
</site>
<site url="relecloud.com"/>
<!-- default for self-closing XML tag is
<compat-mode>Default</compat-mode>
<open-in>None</open-in>
-->
<site url="relecloud.com/products">
<compat-mode>IE8Enterprise"</compat-mode>
<open-in>IE11</open-in>
</site>
<site url="contoso.com/travel">
<compat-mode>IE7</compat-mode>
<open-in>IE11</open-in>
</site>
<site url="fabrikam.com">
<compat-mode>IE7</compat-mode>
<open-in>IE11</open-in>
</site>
</site-list>
</code>

View File

@@ -0,0 +1,20 @@
====== Programmes installés ======
* ADSL TV
*
* Google Chrome
* Google Picasa
* Google Earth
* LibreOffice
* Microsoft LifeCam
* Microsoft Office 2007
* Microsoft Picture IT
* PDF Creator
* Microsoft Money 2005 (14)
* Microsoft Security Essentials
* Crédit Mutuel Virtualis
* Portable APPS
* VLC
* Team Viewer

View File

@@ -0,0 +1,207 @@
====== Sauvegarder ses documents avec Windows ======
{{ informatique:robocopy_la_sauvegarde_sous_windows.jpg?nolink&75x75|Sauvegarder ses documents}}
Testé **non** | Nécessite {{informatique:icon_terminal.png?nolink&32| terminal}}
Cet article est extrait du podcast [[https://www.abonnel.fr/podcast/?name=2018-11-22_cedric_info_13_robocopy_la_sauvegarde_sous_windows.mp3|mindCast Info, sauvegarder ses documents]]
===== - Objectif =====
J'ai une de mes connaissances qui m'a demandé **comment faire une sauvegarde** avec Windows.\\
Il s'agit bien d'effectuer une réplication des données des documents de l'ordinateur vers une unité de stockage extérieure.
Je me suis fixé comme objectif de **ne pas utiliser de programmes complémentaires** à ceux déjà existants sous Windows et d'essayer de **maitriser au maximum le processus**, avec un **temps minimum à lexécution**.
Voici mes explications. Travaux pratiques pour effectuer une sauvegarde "intelligente" sous Windows.
Le but est bien de maintenir limage parfaite des dossiers ou documents de l'ordinateur (appelés __source__) vers une unité de stockage extérieure (appelée __destination__) sans tout recopier systématiquement.
Pour ne pas faire une sauvegarde intégrale de tous vos dossiers à chaque fois, on va essayer d'utiliser un programme qui compare et sauvegarde les modifications des fichiers ou dossiers réalisées à laide dun logiciel.
Pour plus de simplicité, jai préféré ne pas utiliser de programmes complémentaires mais uniquement ceux qui sont déjà disponibles sous Windows. Ceci afin que vous puissiez maitriser au maximum le processus, dans un temps raisonnable par son exécution.
===== - Solution =====
Le programme choisi est **robocopy**. Il s'agit d'un programme en **ligne de commande**. Pour l'executer, nous allons programmer les commander dans un fichier d'execution appelé **BATCH**. Ce sont des fichiers terminant par l'extension **.BAT**.
Au premier lancement, le programme fait une copie intégrale de vos documents vers l'unité de sauvegarde. Cela peut prendre beaucoup de temps.\\
Aux lancements suivants, le programme effectue une sauvegarde incrémentielle (suppression, modification et ajout des fichiers), ce qui prend beaucoup moins de temps.
===== - Le code =====
==== - Sauvegardes des dossiers identifiés ====
J'aurai pu identifier les 4 dossiers principaux''Documents'', ''Bureau'', ''Téléchargement'' et le dossier ''[[linux:AppData]]'', mais j'effectue une sauvegarde complète du dossier utilisateur.
<code DOS sauvegarde_current_user.bat>
@echo off
REM A ecrire dans un fichier sauvegarde_all.bat
REM On sauvegarde tous les dossiers des Users et AppData
REM Adapter les variables ci-dessous si nécessaire
set racine_sauvegarde=e:\sauvegarde
set dossier_sauvegarde=%racine_sauvegarde%\%computername%
if not exist "%TMP%\robocopy" mkdir "%TMP%\robocopy"
set "log_out_script=%TMP%\robocopy\synthese.txt"
set "log_err_robocopy=%TMP%\robocopy\robocopy_%dateTime%_err.txt"
set "log_out_robocopy=%TMP%\robocopy\robocopy_%dateTime%_out.txt"
set rbcpy_errorlevel=0
REM ** on cree le dossier de sauvegarde s'il n'existe pas
IF NOT EXIST "%destination_sauvegarde%" mkdir "%destination_sauvegarde%"
goto save_3
REM ** on commence la sauvegarde 1
set "source_sauvegarde=C:\Users"
set "destination_sauvegarde=%dossier_sauvegarde%\Users"
call :CALLROBOCOPY source_sauvegarde destination_sauvegarde log_out_script
REM ** on commence la sauvegarde 2
set "source_sauvegarde=C:\ProgramData"
set "destination_sauvegarde=%dossier_sauvegarde%\ProgramData"
call :CALLROBOCOPY source_sauvegarde destination_sauvegarde log_out_script
REM ** on commence la sauvegarde 3
:save_3
set "source_sauvegarde=C:\Users\adm_cedric\Documents"
set "destination_sauvegarde=%dossier_sauvegarde%\users\adm_cedric\Documents"
call :CALLROBOCOPY source_sauvegarde destination_sauvegarde log_out_script
GOTO FIN
:ERREUR
echo ********** FIN ANORMALE DU TRAITEMENT *****
exit /B 1
:FIN
REM ** on termine la sauvegarde par marquer un horodatage
echo ********** FIN NORMALE DU TRAITEMENT *****
exit /B 0
rem CALLROBOCOPY SOURCE DESTINATION LOG
rem
rem SOURCE [IN, STR] Nom de la variable contenant le chemin de la source à copier
rem DESTINATION [IN, STR] Nom de la variable contenant le chemin de la destination
rem LOG [IN, STR] Chemin pour accéder au LOG du script
rem
:CALLROBOCOPY
call :GETLOCALDATETIME dateCUR timeCUR
set dateTime=%dateCUR%_%timeCUR%
echo %dateTime% - DEBUT - sauvegarde "%source_sauvegarde%" dans "%destination_sauvegarde%" >>"%log_out_script%"
if not exist "%TMP%\robocopy" mkdir "%TMP%\robocopy"
set "log_err_robocopy=%TMP%\robocopy\robocopy_%dateTime%_err.txt"
set "log_out_robocopy=%TMP%\robocopy\robocopy_%dateTime%_out.txt"
echo Lancement de la copie de %source_sauvegarde%
echo Lancement de la copie de %source_sauvegarde% >>"%log_out_robocopy%"
Robocopy.exe "%source_sauvegarde%" "%destination_sauvegarde%" /E /MIR /Z /DCOPY:T /COPY:DT /TIMFIX /R:0 /W:0 /TEE /NP 1>>"%log_out_robocopy%" 2>>"%log_err_robocopy%"
set rbcpy_errorlevel=%errorlevel%
REM ** on termine la sauvegarde par marquer un horodatage
call :GETLOCALDATETIME dateCUR timeCUR
set dateTime=%dateCUR%_%timeCUR%
echo %dateTime% - FIN - sauvegarde effectuee avec le code %rbcpy_errorlevel% 1>>"%log_out_script%"
if %rbcpy_errorlevel% NEQ 0 (
echo ROBOCOPY s'est executé avec le code erreur %rbcpy_errorlevel%. Vérifier les logs dans %TMP%\robocopy
goto ERREUR
) ELSE (
GOTO :EOF
)
rem GETLOCALDATETIME RESULTDATE RESULTTIME
rem Extraire la date et l'heure independemment des parametres regionaux
rem Extraire la date au format YYYYMMDD et l'heure au format HHMMSS
rem RESULTDATE [OUT, STR] Nom de la variable contenant le date au format YYYYMMDD
rem RESULTDATE=0 si la date n'a pas pu etre extraite
rem RESULTTIME [OUT, STR] Nom de la variable contenant l'heure au format HHMMSS
rem RESULTTIME=0 si l'heure n'a pas pu etre extrait
:GETLOCALDATETIME
set RESULT=
for /f "tokens=* skip=1 delims=" %%A in ('wmic os get LocalDateTime') do (
if not defined RESULT set RESULT=%%A
)
if not defined RESULT set RESULT=0
if %RESULT%==0 (
if "%~1" NEQ "" (set %~1=%RESULT%)
if "%~2" NEQ "" (set %~2=%RESULT%)
) else (
if "%~1" NEQ "" (set %~1=%RESULT:~0,8%)
if "%~2" NEQ "" (set %~2=%RESULT:~8,6%)
)
goto :EOF
</code>
<WRAP center round alert 60%>
Il ne faut pas modifier les fichiers et dossiers de la sauvegarde externe au risque de perdre votre travail.
</WRAP>
==== - Sauvegardes les dossiers de tous les utilisateurs ====
Pour se simplifier la tâche on pourrait sauvegarder tous les fichiers et dossiers présents dans le dossier des utilisateurs.\\
Mais ce n'est pas si simple, car les dossiers des utilisateurs peuvent être protégés en lecture. Il faudrait avoir des droits plus étendus. On parle alors de droit ACL. Une exécution du script avec les droits administrateur permettrait de contourner le problème.
<code DOS sauvegarde_all.bat>
REM A ecrire dans un fichier sauvegarde_all.bat
REM Adapter les variables ci-dessous si nécessaire
set source_sauvegarde=%homedrive%%homepath%\..
set racine_sauvegarde=e:\sauvegarde
set destination_sauvegarde=%racine_sauvegarde%\%computername%
REM **************************************
REM ***** NE PAS MODIFIER EN DESSOUS *****
REM **************************************
REM ** on cree le dossier de sauvegarde s'il n'existe pas
IF NOT EXIST "%destination_sauvegarde%" mkdir -p "%destination_sauvegarde%"
REM ** on commence la sauvegarde
Robocopy.exe "%source_sauvegarde%\\" "%destination_sauvegarde%" /E /MIR /Z /DCOPY:T /COPY:DT /TIMFIX /R:0 /W:0 /TEE /NP
REM ** on termine la sauvegarde par marquer un horodatage
set dateCUR=%date:~6,4%%date:~3,2%%date:~0,2%
set timeCUR=%time:~0,2%%time:~3,2%%time:~6,2%
set dateTime=%dateCUR%_%timeCUR%
echo %dateTime% sauvegarde "%source_sauvegarde%" dans "%destination_sauvegarde%" effectuee >>"%racine_sauvegarde%\infos.txt"
</code>
===== - Vérification =====
Il va falloir vérifier que les fichiers contenu dans la **source** soit également dans la **destination**. Pas un de plus, pas un de moins. C'est là que les choses se corsent. Lors de mes tests, il est apparu que l'explorateur de fichier calculé n'importe quoi, n'importe comment.\\
Il a fallu que je retourne dans une fenêtre de **ligne de commandes** (fenêtre DOS) et jouer avec la commande ''dir''.
Je vous détaillera cela ultérieurement. Revenez plus tard sur cette page SVP.
===== - Évolutions =====
Prochainement
* une vidéo pour montrer comment j'ai fait.
* la vérification du contenu synchronisé.
* le changement de lecteur à chaque branchement d'un disque externe ?
* faut-il préférer une sauvegarde externe ou interne ?
* faut-il faire confiance à une sauvegarde sur clé USB, disque SSD, DVD ?
* corriger les fautes.
* compléter l'article suivant vos retours