"François Picalausa" a écrit dans le message de news:%
Hello,
Concernant la non récursivité, il existe en fait deux techniques pour renommer une clé de registre. 1°/ Utiliser RegSaveKey/RegRestoreKey Mais : - ne fonctionne que sous NT, 2k, XP, ... - demande d'utiliser un fichier temporaire
1° bis/ Utiliser regedit en ligne de commande pour faire la même opération... fonctionne sous 9x Mais : - Demande d'utiliser un fichier temporaire - Demande d'éditer le fichier avant réécriture (=> parsing... beurk), en supposant bien entendu que le format des fichiers reg ne change pas
trop...
2°/ SHCopyKey qui "recursively copies the subkeys and values of the
source
subkey to the destination key. SHCopyKey does not copy the security attributes of the keys." Ou comment éviter de faire ce que le shell fait pour nous :-) Il y a quand même une petite restriction au niveau des plateformes: "Windows 2000, Windows NT 4.0 with Internet Explorer 5, Windows 98,
Windows
95 with Internet Explorer 5"
'Note a Zoury : 'Un peu de machage de travail, si ça te tente? Private Declare Function SHCopyKey _ Lib "shlwapi" _ Alias "SHCopyKeyA" _ ( _ ByVal hkeySrc As Long, _ ByVal szSrcSubKey As String, _ ByVal hkeyDest As Long, _ ByVal fReserved As Long _ ) _ As Long
Public Sub CopyKey(ByRef bkhSrc As eBaseKeyHandle, _ ByRef sKeySrc As String, _ ByRef bkhDst As eBaseKeyHandle, _ ByRef sKeyDst As String _ )
Dim hKey As Long
'Note : 'Remplacer RegCreateKeyEx par RegOpenKeyEx équivalent 'si la fonction ne doit pas automatiquement créer 'la clé de destination If RegCreateKeyEx(bkhDst, sKeyDst, 0, vbNullString, _ 0, KEY_WRITE, ByVal 0&, hKey, ByVal 0&) = NO_ERROR Then Debug.Print SHCopyKey(bkhSrc, sKeySrc, hKey, 0) RegCloseKey hKey End If End Sub
Voila voila :-)
-- François Picalausa
"Aski" a écrit dans le message de news: O4mUEni$ > Hello Yanick, > > "Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message > de news:%23OQPtxZ$ >>> Mais il faut constater que lorsqu'on te donne tout mâché, on >>> apprend moins. >> >> Ça dépend de l'attitude du programmeur je dirais... >> >> Personnellement lorsque que je trouve un bout de code tout fait, je >> le lit attentivement et tente de le comprendre (fouille l'aide pour >> les nouvelles fonctions) et voir même de l'amélioré si possible. >> J'apprends toutau tant et peut-être même plus car je n'aurais >> peut-être jamais découvert cette façon de faire en le fesant moi >> même.. >> >> J'avoue toutefois que certaines personnes accepte sans questions >> tout ce qu'on leur donne (et pas juste en informatique)... souvent >> ils ne comprennent même pas ce qui se passe! Ces gens n'apprendrons >> possiblement jamais rien de plus que ce que leurs professeurs leurs >> ont entrés dans la tête à grand coup de pelle. ;O) > > J'applaudis des 2 mains ta synthèse :-))) > >> >>> Il va y avoir un peu de récursivité, non ? >> >> sans aucun doute. <zelle>quoi que si je peux l'éviter.. je sauverez >> bien quelques millisecondes précieuses . :OD </zelle> > > Effectivement, on trouve souvent une solution non récursive qui > n'augmente pas trop le code et gagne en clarté (exemples des tris et > de la recherche de l'arborescence). > > Une remarque, en étudiant plus à fond ton code : pour > l'enregistrement des valeurs et surtout leur lecture, il serait > intéressant d'ajouter le cas des valeurs REG_BINARY et de considérer > REG_EXPAND_SZ (&H2) au même titre que REG_SZ. > > Cordialement > > Henri
hehe!
Merci bien! :O)
"François Picalausa" <fpicalausa@chez.com> a écrit dans le message de
news:%236hZsAAAFHA.1292@TK2MSFTNGP10.phx.gbl...
Hello,
Concernant la non récursivité, il existe en fait deux techniques pour
renommer une clé de registre.
1°/ Utiliser RegSaveKey/RegRestoreKey
Mais :
- ne fonctionne que sous NT, 2k, XP, ...
- demande d'utiliser un fichier temporaire
1° bis/ Utiliser regedit en ligne de commande pour faire la même
opération... fonctionne sous 9x
Mais :
- Demande d'utiliser un fichier temporaire
- Demande d'éditer le fichier avant réécriture (=> parsing... beurk), en
supposant bien entendu que le format des fichiers reg ne change pas
trop...
2°/ SHCopyKey qui "recursively copies the subkeys and values of the
source
subkey to the destination key. SHCopyKey does not copy the security
attributes of the keys."
Ou comment éviter de faire ce que le shell fait pour nous :-)
Il y a quand même une petite restriction au niveau des plateformes:
"Windows 2000, Windows NT 4.0 with Internet Explorer 5, Windows 98,
Windows
95 with Internet Explorer 5"
'Note a Zoury :
'Un peu de machage de travail, si ça te tente?
Private Declare Function SHCopyKey _
Lib "shlwapi" _
Alias "SHCopyKeyA" _
( _
ByVal hkeySrc As Long, _
ByVal szSrcSubKey As String, _
ByVal hkeyDest As Long, _
ByVal fReserved As Long _
) _
As Long
Public Sub CopyKey(ByRef bkhSrc As eBaseKeyHandle, _
ByRef sKeySrc As String, _
ByRef bkhDst As eBaseKeyHandle, _
ByRef sKeyDst As String _
)
Dim hKey As Long
'Note :
'Remplacer RegCreateKeyEx par RegOpenKeyEx équivalent
'si la fonction ne doit pas automatiquement créer
'la clé de destination
If RegCreateKeyEx(bkhDst, sKeyDst, 0, vbNullString, _
0, KEY_WRITE, ByVal 0&, hKey, ByVal 0&) = NO_ERROR Then
Debug.Print SHCopyKey(bkhSrc, sKeySrc, hKey, 0)
RegCloseKey hKey
End If
End Sub
Voila voila :-)
--
François Picalausa
"Aski" <aski@free.com> a écrit dans le message de news:
O4mUEni$EHA.2568@TK2MSFTNGP11.phx.gbl
> Hello Yanick,
>
> "Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message
> de news:%23OQPtxZ$EHA.3376@TK2MSFTNGP12.phx.gbl...
>>> Mais il faut constater que lorsqu'on te donne tout mâché, on
>>> apprend moins.
>>
>> Ça dépend de l'attitude du programmeur je dirais...
>>
>> Personnellement lorsque que je trouve un bout de code tout fait, je
>> le lit attentivement et tente de le comprendre (fouille l'aide pour
>> les nouvelles fonctions) et voir même de l'amélioré si possible.
>> J'apprends toutau tant et peut-être même plus car je n'aurais
>> peut-être jamais découvert cette façon de faire en le fesant moi
>> même..
>>
>> J'avoue toutefois que certaines personnes accepte sans questions
>> tout ce qu'on leur donne (et pas juste en informatique)... souvent
>> ils ne comprennent même pas ce qui se passe! Ces gens n'apprendrons
>> possiblement jamais rien de plus que ce que leurs professeurs leurs
>> ont entrés dans la tête à grand coup de pelle. ;O)
>
> J'applaudis des 2 mains ta synthèse :-)))
>
>>
>>> Il va y avoir un peu de récursivité, non ?
>>
>> sans aucun doute. <zelle>quoi que si je peux l'éviter.. je sauverez
>> bien quelques millisecondes précieuses . :OD </zelle>
>
> Effectivement, on trouve souvent une solution non récursive qui
> n'augmente pas trop le code et gagne en clarté (exemples des tris et
> de la recherche de l'arborescence).
>
> Une remarque, en étudiant plus à fond ton code : pour
> l'enregistrement des valeurs et surtout leur lecture, il serait
> intéressant d'ajouter le cas des valeurs REG_BINARY et de considérer
> REG_EXPAND_SZ (&H2) au même titre que REG_SZ.
>
> Cordialement
>
> Henri
"François Picalausa" a écrit dans le message de news:%
Hello,
Concernant la non récursivité, il existe en fait deux techniques pour renommer une clé de registre. 1°/ Utiliser RegSaveKey/RegRestoreKey Mais : - ne fonctionne que sous NT, 2k, XP, ... - demande d'utiliser un fichier temporaire
1° bis/ Utiliser regedit en ligne de commande pour faire la même opération... fonctionne sous 9x Mais : - Demande d'utiliser un fichier temporaire - Demande d'éditer le fichier avant réécriture (=> parsing... beurk), en supposant bien entendu que le format des fichiers reg ne change pas
trop...
2°/ SHCopyKey qui "recursively copies the subkeys and values of the
source
subkey to the destination key. SHCopyKey does not copy the security attributes of the keys." Ou comment éviter de faire ce que le shell fait pour nous :-) Il y a quand même une petite restriction au niveau des plateformes: "Windows 2000, Windows NT 4.0 with Internet Explorer 5, Windows 98,
Windows
95 with Internet Explorer 5"
'Note a Zoury : 'Un peu de machage de travail, si ça te tente? Private Declare Function SHCopyKey _ Lib "shlwapi" _ Alias "SHCopyKeyA" _ ( _ ByVal hkeySrc As Long, _ ByVal szSrcSubKey As String, _ ByVal hkeyDest As Long, _ ByVal fReserved As Long _ ) _ As Long
Public Sub CopyKey(ByRef bkhSrc As eBaseKeyHandle, _ ByRef sKeySrc As String, _ ByRef bkhDst As eBaseKeyHandle, _ ByRef sKeyDst As String _ )
Dim hKey As Long
'Note : 'Remplacer RegCreateKeyEx par RegOpenKeyEx équivalent 'si la fonction ne doit pas automatiquement créer 'la clé de destination If RegCreateKeyEx(bkhDst, sKeyDst, 0, vbNullString, _ 0, KEY_WRITE, ByVal 0&, hKey, ByVal 0&) = NO_ERROR Then Debug.Print SHCopyKey(bkhSrc, sKeySrc, hKey, 0) RegCloseKey hKey End If End Sub
Voila voila :-)
-- François Picalausa
"Aski" a écrit dans le message de news: O4mUEni$ > Hello Yanick, > > "Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message > de news:%23OQPtxZ$ >>> Mais il faut constater que lorsqu'on te donne tout mâché, on >>> apprend moins. >> >> Ça dépend de l'attitude du programmeur je dirais... >> >> Personnellement lorsque que je trouve un bout de code tout fait, je >> le lit attentivement et tente de le comprendre (fouille l'aide pour >> les nouvelles fonctions) et voir même de l'amélioré si possible. >> J'apprends toutau tant et peut-être même plus car je n'aurais >> peut-être jamais découvert cette façon de faire en le fesant moi >> même.. >> >> J'avoue toutefois que certaines personnes accepte sans questions >> tout ce qu'on leur donne (et pas juste en informatique)... souvent >> ils ne comprennent même pas ce qui se passe! Ces gens n'apprendrons >> possiblement jamais rien de plus que ce que leurs professeurs leurs >> ont entrés dans la tête à grand coup de pelle. ;O) > > J'applaudis des 2 mains ta synthèse :-))) > >> >>> Il va y avoir un peu de récursivité, non ? >> >> sans aucun doute. <zelle>quoi que si je peux l'éviter.. je sauverez >> bien quelques millisecondes précieuses . :OD </zelle> > > Effectivement, on trouve souvent une solution non récursive qui > n'augmente pas trop le code et gagne en clarté (exemples des tris et > de la recherche de l'arborescence). > > Une remarque, en étudiant plus à fond ton code : pour > l'enregistrement des valeurs et surtout leur lecture, il serait > intéressant d'ajouter le cas des valeurs REG_BINARY et de considérer > REG_EXPAND_SZ (&H2) au même titre que REG_SZ. > > Cordialement > > Henri