Appli console en VB.NET pour modifier le registre ?

Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010 - 15 déc. 2006 à 11:18
Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010 - 19 déc. 2006 à 12:24
Bonjour,

j'ai besoin de votre aide pour le sujet suivant :

j'ai commencé à mettre en place une appli console en VB.NET pour recuperer dans le registre le nom du processeur dans le PC (pour savoir si INTEL ou AMD). le voila :

'recupere le chemin de la première clé pour lire le nom du processeur

Dim Reg
As RegistryKey

Dim chaine
As
StringReg = Registry.LocalMachine.OpenSubKey("HARDWARE",

True).OpenSubKey("Description",
True).OpenSubKey("System",
True).OpenSubKey("CentralProcessor",
True).OpenSubKey("0",
True)chaine = Reg.GetValue("ProcessorNameString")

Reg.Close()

'affiche un message dans la consoleConsole.WriteLine(chaine)

j'ai donc un resultat qui me donne le nom, et maintenant j'aimerai automatiser à la suite de ce resultat une modification dans le registre (pour configurer un service suivant si le proc est intel ou AMD donc). pour ce faire j'ai 2 fichiers *.reg à ma disposition.

mais là ou je bloque c'est pour rajouter dans mon code comment lancer le fichier AMD.reg ou INTEL.reg suivant le resultat que me donne la clé

en resumé voila ce que je cherche à mettre en place : un exe automatique au lancement du PC qui scanne le registre pour connaitre le nom du proc, et qui modifie une valeure dans une sous clé suivant le resultat du scan..

Donc help pour m'aider à avance svp (et merci d'avance)

12 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
15 déc. 2006 à 11:29
Tu peux rajouter ça à la fin de ton code :
        If chaine.Contains("Intel") Then
            Shell("regsvr32 Intel.reg")
        Else
            Shell("regsvr32 amd.reg")
        End If

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010
15 déc. 2006 à 13:35
merci pour ta reponse.

c'est effectivement tout simple comme solution, mais malheureusement pas encore intuitif pour moi.

d'ailleurs j'ai un nouveau probleme suite à  ta reponse (je sens que je vais poster un bon moment dans la rubrique "débutant" avant de pouvoir en changer )

"chaine.contains" est souligné et l'info bulle me dit que "contains n'est pas un membre de string"

que cosa di ?
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
15 déc. 2006 à 13:39
Tu code en quoi VB2005 ou VB2003.

.contains n'existe qu'en VB2005.

En VB2003 il faut faire comme ça : If InStr(chaine,"Intel") > 0  Then

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010
15 déc. 2006 à 13:52
en VB2003

merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010
15 déc. 2006 à 14:25
derniere question stp :


dans le repertoire bin j'ai bien mon fichier Exe


il y a aussi un fichier .pdb avec


c'est utile de le laisser associé avec le .exe si je le copie ailleurs, ou sans importance ?
0
Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010
15 déc. 2006 à 14:25
derniere question stp :


dans le repertoire bin j'ai bien mon fichier Exe


il y a aussi un fichier .pdb avec


c'est utile de le laisser associé avec le .exe si je le copie ailleurs, ou sans importance ?
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
15 déc. 2006 à 14:33
Certainement parce que tu as compilé ton appli en mode débug. Noramalement ce fichier contient des informations pour pouvoir débuggé le programme.

Habituellement une fois terminé, juste avant livraison, le programme est compilé en mode Release. Dans ce cas je pense que ce fichier n'est plus généré.

A priori je dirais que tu n'as pas besoin de le copier.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010
15 déc. 2006 à 15:23
Ok merci
mon code marche et tout va bien !
bon w-e
0
Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010
18 déc. 2006 à 17:28
Bonsoir,


je cherche à ameliorer mon code (qui marche bien tel quel je le rappelle) mais j'y arrive pas tout seul donc je reviens ici :


mon but : plutot que de modifier le registre en lancant des fichiers .Reg à partir du nom du processeur,


j'essaye de le faire directement via le code mais rien ne se passe...

je cherche à modifier une valeur DWORD et voila où j'en suis : (je sais pas si je suis sur une mauvaise piste ou si j'ai oublié qlqchose . MERCI D'AVANCE)



Module



Module1


Sub
Main()


'recupère le chemin de la première clé pour lire le nom du processeur






Dim
Key

As
RegistryKey


Dim
chaine

As



String

Key = Registry.LocalMachine.OpenSubKey("HARDWARE",




True
).OpenSubKey("Description",

True
).OpenSubKey("System",

True
).OpenSubKey("CentralProcessor",

True
).OpenSubKey("0",

True
)chaine = Key.GetValue("ProcessorNameString")

Key.Close()


'modification du service Intelppm dans le registre en fonction du nom du processeur






Dim
Key2

As
RegistryKey


Dim
chaine2

As



String

Key2 = Registry.LocalMachine.OpenSubKey("SYSTEM",




True
).OpenSubKey("CurrentControlSet",

True
).OpenSubKey("Services",

True
).OpenSubKey("intelppm",

True
).OpenSubKey("Start")chaine2 = Key2.GetValue("start")


If
InStr(chaine, "Intel") > 0

Then

Registry.LocalMachine.SetValue("chaine2", 1)







Else

Registry.LocalMachine.SetValue("chaine2", 4)







End



If






End



SubEnd





Module
0
Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010
18 déc. 2006 à 18:23
je viens de m'apercevoir que je suis dans VB6\débutant alors qu'il y a une categorie VB.NET\débutant qui me concerne plus.
ya moyen de moyenner quelquechose pour deplacer ce sujet là bas ?
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
18 déc. 2006 à 19:42
Seul un admin peut le faire.

Revoie ta chaine d'ouverture de key2. Tu ne devrais pas avoir le dernier opensubkey("Start") je pense.

Ensuite revoie ce que tu fais dans ce code :

If InStr(chaine, "Intel") > 0 Then
    Registry.LocalMachine.SetValue("chaine2", 1)
Else
    Registry.LocalMachine.SetValue("chaine2", 4)
End If

Pour moi il est pas correct, car là tu créer une valeur nommée "chaine2" sous la clé LOCALMACHINE.
Je pense que toi tu souhaite plutot modifier la valeur de "Start".
Dans ce cas, il faudrait écrire : key2.SetValue("Start",1)

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010
19 déc. 2006 à 12:24
super ta modif ça marche bien !

toi, t'es en train de devenir mon nouveau meilleur copain !
0
Rejoignez-nous