Help... Base de registre

rgilles Messages postés 26 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 16 novembre 2009 - 16 nov. 2009 à 10:25
rgilles Messages postés 26 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 16 novembre 2009 - 16 nov. 2009 à 14:09
Bonjour,

J'ai un problème je n'arrive pas à écrire une clé dans la base de registre en VB6 et Vista.
Bien sûr ceci n'est pas pour un virus mais pour palier à un problème chez un de mes clients sur une vielle appli Américaine.
Le but étant d'écrire une clé dans la base de registre avec comme valeur le chemin du fichier listé dans un combobox.

Après un après-midi de recherche je trouve pleins d'exemples utilisant les api mais je n'arrive pas a le faire (surement à cause de mon niveau)

Voici le code que j'ai récupéré sur vbfrance mais qui ne fonctionne pas.

Sub creer_Cle()
Set gui = CreateObject("WScript.Shell")
gui.RegWrite "[HKEY_USERS\S-1-5-21-539643179-2658049612-200979404-1006\Software\AppliVB\Test]", "REG_SZ" '(ou"REG-SZ" ou "REG_EXPAND_SZ")
End Sub

Je souhaite qu'une valeur chaine nommé File1 avec comme valeur "C:\....\...." en rapport avec le chemin et l'extention du fichier listé dans le combo soit créer.

Merci de votre aide.
riri

14 réponses

cs_jcq Messages postés 211 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 15 janvier 2010
16 nov. 2009 à 10:59
Pour des exemples de base de registre en VB6 il y en a des paquets, toutes très simples. Pour ton problème ça vient plus d'un problème de droit d'écriture. Depuis Vista tu ne peux pas écrire n'importe ou dans la base de registre sans les droits qui vont bien.

Pour l'écriture dans la base de registre qui fonctionne voici un exemple simple à copier coller dans un module et hop: http://www.devx.com/vb2themax/Tip/19135


Bart-Rennes
La vie est courte, profitez-en !
Contrôles de bouton et frame en ActiveX et WinForm .NET sur http://www.namtuk.com/FR/DotNet_bouton_my_command_button.aspx
0
rgilles Messages postés 26 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 16 novembre 2009
16 nov. 2009 à 11:11
Merci jcp

Mais je n'arrive pas a comprendre le code
Je ne comprend pas dans ce code comment on lui dit quelle est la clé que l'on souhaite écrire et ou elle ce trouve...

N'y a t'il pas moyen d'écrire une clé avec 1 ou 2 lignes de code comme j'ai mis plus haut.


riri
0
cs_jcq Messages postés 211 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 15 janvier 2010
16 nov. 2009 à 11:21
En VB6 il n'y a pas grands chose de natif, il faut coder. Le code que je t'ai donné est simple, tu l'appelles comme ça:

SetRegistryValue(HKEY_USERS, "S-1-5-21-539643179-2658049612-200979404-1006\Software\AppliVB", "Test", "chemin du fichier")

Peut être que ton code fonctionne, je n'ai pas le temps de tester aujourd'hui. Mais comme je t'ai dis auparavant je ne suis pas sur que tu puisses écrire dans la base de registre que tu indiques sans avoir exécuté le programme en mode administrateur.

Bart-Rennes
La vie est courte, profitez-en !
Contrôles de bouton et frame en ActiveX et WinForm .NET sur http://www.namtuk.com/FR/DotNet_bouton_my_command_button.aspx
0
rgilles Messages postés 26 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 16 novembre 2009
16 nov. 2009 à 11:35
Merci,

Effectivement cela n'a pas l'air d'être très compliqué comme code (je ne voyais pas cela si simple).
J'ai donc créer un module avec le code du lien ci-dessus et copier le code ci-dessous dans mon projet.

Sub creer_Sous_Cle()

SetRegistryValue(HKEY_USERS, "S-1-5-21-539643179-2658049612-200979404-1006\Software\AppliVB", "Test", "chemin du fichier")

End Sub

Mais j'ai un message "Erreur de compilation et Attendu:=" quand je clique ailleur.
Je suppose que cela vient de la mise en forme de la ligne mais je ne vois pas ou...
As tu une idée?

riri
0

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

Posez votre question
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
16 nov. 2009 à 11:44
commence par enlever les paranthèses ou laisse-les, mais assigne à une variable !
(B.A.BA en matière d'appel de fonctions)
0
cs_jcq Messages postés 211 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 15 janvier 2010
16 nov. 2009 à 11:47
Effectivement comme le dis jmf, enlève les parenthéses:
SetRegistryValue HKEY_USERS, "S-1-5-21-539643179-2658049612-200979404-1006\Software\AppliVB", "Test", "chemin du fichier"


Bart-Rennes
La vie est courte, profitez-en !
Contrôles de bouton et frame en ActiveX et WinForm .NET sur http://www.namtuk.com/FR/DotNet_bouton_my_command_button.aspx
0
rgilles Messages postés 26 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 16 novembre 2009
16 nov. 2009 à 12:01
Merci de votre aide.

Effectivement cela venait bien des parenthèses maintenant je n'ai plus de message mais la clé ne s'écrit pas.
Il ne se passe rien, aucune clé n'est écrite pourtant avec un .reg j'arrive bien a écrire la clé à cet endroit (donc je pense pas que ce soit une histoire de droit).

Avez vous une idée?
Merci encore de votre aide.


riri
0
cs_jcq Messages postés 211 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 15 janvier 2010
16 nov. 2009 à 12:12
Ta clé n'est pas valide: HKEY_USERS\S-1-5-21-539643179-2658049612-200979404-1006\Software\

Ce serait normalement: HKEY_USERS\Software\

Merci de confirmer, edit ton fichier .reg initiale et donnes la clé complète.

Bart-Rennes
La vie est courte, profitez-en !
Contrôles de bouton et frame en ActiveX et WinForm .NET sur http://www.namtuk.com/FR/DotNet_bouton_my_command_button.aspx
0
rgilles Messages postés 26 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 16 novembre 2009
16 nov. 2009 à 12:25
Voici le contenu du .reg
Windows Registry Editor Version 5.00

[HKEY_USERS\S-1-5-21-539643179-2658049612-200979404-1006\Software\AppliVB\Wdnc]
"MainWnd"=hex:f8,ff,ff,ff,f8,ff,ff,ff,98,05,00,00,7c,03,00,00
"WndArrangement"=dword:00000000
"File1"="C:\\Users\\paul\\Documents\\Technology\\DNC\\MYCENTER Envoi.srs"

Par contre avec le code que tu m'as donné tous à l'heure cela fonctionne bien en HKEY_LOCAL_MACHINE mais pas en HKEY_CURRENT_USER n'y en HKEY_USERS.

Peut-être bien une histoire de droit pourtant je suis Admin du pc.

Moi aussi cela m'a surpris que le dossier Software ce trouve dans un dossier nommé bizarement mais peut-être cela est du à Vista.
De plus il faut que chez mon client l'appli tourne sous Xp donc j'éspère que les clés ce trouvent bien au même endroit (je verais quand cela fonctionnera sur mon poste).

riri
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
16 nov. 2009 à 13:05
Hello, Avec Vista tu ne peux modifier que les HKey_CurrentUser les autres t'y sont interdit si tu n'est pas en admin, activé admin bref un bordel.

Si cela peux t'aider

Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT
0
rgilles Messages postés 26 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 16 novembre 2009
16 nov. 2009 à 13:43
Ok mais pourquoi est-ce que j'arrive sans problème a créer cette clé avec le .reg?????
Existe t'il une solution pour pouvoir créer cette clé quand même en passant au delà des sécurités.
Je n'ai pas le choix car l'appli Américaines modifie cette clé...

riri
0
cs_jcq Messages postés 211 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 15 janvier 2010
16 nov. 2009 à 13:52
Alors comme ça m'a l'air pas très orthodoxe ton appli, tu devrais:
1- Installer Virtual PC avec une image XP (comme celle dont ton client utilise)
2- Installer l'appli 'Américaine' et bien vérifier la clé de la base de registre qui n'est pas vraiment une clé standard.
3- Ensuite tu fais ton appli en prenant en compte cette clé, d'ailleurs dans ton appli tu mets une option qui définit la clé exacte, comme ça chez ton client tu pourras entrer manuellement la clé dans le logiciel.

Pour ce qui est de passer outre la sécurité de Vista et 7, eh bien non pas possible sinon ce n'est plus de la sécurité. Le seul moyen est d'exécuter ton appli avec les droits administrateurs sous Vista et 7 (click droit sur ton exe, propriété et là tu peux définir de l'exécuter tout le temps en temps que Admin, mais tu auras un message d'avertissement à chaque démarrage).

Bart-Rennes
La vie est courte, profitez-en !
Contrôles de bouton et frame en ActiveX et WinForm .NET sur http://www.namtuk.com/FR/DotNet_bouton_my_command_button.aspx
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
16 nov. 2009 à 13:54
Ok mais pourquoi est-ce que j'arrive sans problème a créer cette clé avec le .reg

Oui ?
Tiens !... Curieux, çà !
Alors :
1) un fichier .reg n'est qu'un fichier text
2) écris-le dynamiquement et exécute-le !
(mais je n'en crois vraiment rien ...)
0
rgilles Messages postés 26 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 16 novembre 2009
16 nov. 2009 à 14:09
Ba oui j'arrive bien a créer cette clé avec le .reg donc pourquoi cela ne fonctionne t'il pas avec VB6???
J'aimerais bien pouvoir passer a coté de cette clé mais l'appli Américaine créer cette clé, ce qui a pour conséquence que quand on double clique sur un fichier .rrs ou .srs natif de cette appli il ouvre toujours le fichiers en rapport avec le dernier fichier ouvert par celle ci et non celui sur lequel je double clique...

Donc moi je liste les fichiers d'un dossier dans un combobox puis en cliquant sur ouvrir je voudrais changer la valeur de cette clé afin d'ouvrir le fichier que l'utilisateur a cliqué.

Voilà vous savez tous, quelqu'un a t'il une idée sinon c'est la galère....

riri
0
Rejoignez-nous