rgilles
Messages postés26Date d'inscriptionsamedi 31 janvier 2004StatutMembreDernière intervention16 novembre 2009
-
16 nov. 2009 à 10:25
rgilles
Messages postés26Date d'inscriptionsamedi 31 janvier 2004StatutMembreDernière intervention16 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.
cs_jcq
Messages postés211Date d'inscriptionvendredi 12 décembre 2003StatutMembreDernière intervention15 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
rgilles
Messages postés26Date d'inscriptionsamedi 31 janvier 2004StatutMembreDernière intervention16 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.
cs_jcq
Messages postés211Date d'inscriptionvendredi 12 décembre 2003StatutMembreDernière intervention15 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.
rgilles
Messages postés26Date d'inscriptionsamedi 31 janvier 2004StatutMembreDernière intervention16 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_jcq
Messages postés211Date d'inscriptionvendredi 12 décembre 2003StatutMembreDernière intervention15 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"
rgilles
Messages postés26Date d'inscriptionsamedi 31 janvier 2004StatutMembreDernière intervention16 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).
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).
cboulas
Messages postés2641Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention 8 janvier 201416 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
rgilles
Messages postés26Date d'inscriptionsamedi 31 janvier 2004StatutMembreDernière intervention16 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é...
cs_jcq
Messages postés211Date d'inscriptionvendredi 12 décembre 2003StatutMembreDernière intervention15 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).
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 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 ...)
rgilles
Messages postés26Date d'inscriptionsamedi 31 janvier 2004StatutMembreDernière intervention16 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....