Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1521 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [BATCH/Windows] Changer valeur d'une chaine dans la base de registre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[BATCH/Windows] Changer valeur d'une chaine dans la base de registre

n°1868786
LoDeNo
Bicourge
Posté le 02-04-2009 à 16:35:49  profilanswer
 

Bonjour,
 
Ce que je veux faire :
Dans un réseau, toutes les imprimantes vont changer d'adresse IP. Je souhaite automatiser la modification des configs des postes de travail pour éviter de devoir aller sur chaque PC du réseau pour modifier les adresses IP des imprimantes.
Je veux donc lancer un batch qui change dans la base de registre une adresse IP en une autre.
 
Contraintes :
- je ne connais pas à l'avance le nom de la clé exacte où se situe la chaine contenant l'adresse IP. En revanche, je sais dans quelle partie de la BR se trouvent mes valeurs (Ex : "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers" )
- la chaine contenant l'adresse IP peut contenir autre chose (ex : IPPORT_10.1.1.6)
- la chaine à changer peut apparaitre plusieurs fois dans la base de registre : il faut la changer à toutes les occurences.
- tous les PC sont sous WinXP SP3
 
Ce que j'ai essayé :
Je n'ai pas trouvé d'outils permettant de modifier directement la base de registre en batch. Je suis donc parti sur le principe suivant :
 
1 -> extraction d'une clé dans un fichier texte via REG QUERY. C'est OK, j'obtiens un gros fichier texte qui contient, dans le tas, mon adresse IP.
2 -> Changement de toutes les occurences de la chaine "adresse IP" dans ce fichier texte, en la remplaçant par une autre.
3 -> réintégration du fichier texte dans la BR.
 
Là où j'ai besoin d'aide :
Pas de problème pour les étapes 1 et 3. (REGEDIT /E et /S)
En revanche, je bute sur l'étape 2 (je pensais que ce serait le plus simple). Les tentatives que j'ai faites me détruisent mon fichier.
Si je fais "à la main" l'étape 2 (via le bloc note), ça marche très bien.
 
J'ai essayé les méthodes suivantes que j'ai trouvées sur le net :
 - sed : étonnamment, sed me détruit le fichier, me générant dedans des caractères barbares. Il doit y avoir dans l'extraction de la base de registre des symboles qui ne lui plaisent pas.
 - switch : c'est un petit programme qu'on trouve sur le net et qui est sensé faire exactement ce que je veux. Même problème que Sed hélas
 - batch DOS : J'ai tenté un programme DOS comme suit :
 
p1.reg est le fichier extrait de ma BR. p1mod.reg est le fichier modifié : identique à p1, mais avec les IP nouvelles.
 

Code :
  1. for /f "delims=" %%a in ('type "p1.reg"') do call :commande "%%a"
  2. goto :fin
  3. :commande
  4. set ligne=%1
  5. set ligne=%ligne:~1,-1%
  6. set ligne=%ligne:10.0.0.60=10.1.1.60%
  7. echo %ligne% >>p1mod.reg
  8. pause
  9. :fin


Ca marche presque ... mais il y a des bugs.
 
En prenant ce bout extrait de mon registre par exemple :

Code :
  1. Windows Registry Editor Version 5.00
  2. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers]
  3. "DefaultSpoolDirectory"="C:\\WINDOWS\\System32\\spool\\PRINTERS"
  4. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\Auto RICOH Aficio MP 4000 RPCS sur SERVEURNAS]
  5. "ChangeID"=dword:003cf894
  6. "Status"=dword:00000080
  7. "Name"="Auto RICOH Aficio MP 4000 RPCS sur SERVEURNAS"
  8. "Share Name"=""
  9. "Print Processor"="WinPrint"
  10. "Datatype"="RAW"
  11. "Parameters"=""
  12. "Action"=dword:00000000


 
La ligne "Name"="Auto RICOH Aficio MP 4000 RPCS sur SERVEURNAS" n'est pas prise en entier.
Je ne comprends pas pourquoi. Mais du coup, mon fichier de sortie est foireux, donc ça ne va pas.
 
 
Si vous avez une idée :
 - soit pour faire marcher ce programme batch
 - soit pour me proposer une solution autre qui réponde à mon besoin initial
vous êtes les bienvenus.
 
Merci
 
LoDeNo
 
 
 
 
 


Message édité par LoDeNo le 02-04-2009 à 17:00:03
mood
Publicité
Posté le 02-04-2009 à 16:35:49  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [BATCH/Windows] Changer valeur d'une chaine dans la base de registre

 

Sujets relatifs
Question de base pour débuter[Script] Piloter une application windows avec une gestion des erreurs
BATCH + FLAG[BATCH] lancement de programme, validation automatique
[Batch] verifier contition et GOTODéfinir un type "duration" comprenant des valeur négative.
Stockage temporaire d'une valeur ?Salut !! PHP Windows IISS (probleme de script)
Récuperation valeur d'un Select modifié dynamiquement sous Explorerj n arrive pas à créer une connexion java vers base de données mysql
Plus de sujets relatifs à : [BATCH/Windows] Changer valeur d'une chaine dans la base de registre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR