Pour
sKeyName = "SOFTWARE\Classes"
la fonction retourne bien zéro.
Par contre, pour les niveaux de clefs inférieurs, tels que
sKeyName = "SOFTWARE\Classes\PowerPoint.Application"
la fonction retourne 2
Les clés analogues de HKEY_CURRENT_USER ne posent pas de problème
Savez-vous s'il existe une sécurité dans Vista empêchant d'ouvrir de
telles clés ?
J'ai parcouru la FAQ et utilisé Google sans succès.
Merci
--
Cordialement
Aski
AntiSpamEdit (ASE) - XtractOE et XtractWM - K9 en français
http://dechily.org/downloads.htm
Pas bien grave :-) , mais c'est même un peu plus compliqué. Regardes ma réponse à aski, qui parle des pages 18 à 22 du document que tu as indiqué. L'erreur 5, c'est bien elle si il y a un problème de privilèges, on ne l'obtiens que sous XP (ou précédent), pas sous Vista.
Ce principe de virtualisation a été mis en place, apparemment, pour éviter que les utilisateurs modifient les droits d'accès sur les répertoires ou les clés de registre, et garder une compatibilité avec certains logiciel.
Mais il est bien précisé, que ce système est temporaire et ne sera pas conservé dans les versions suivantes de l'OS :
<Citation> Microsoft intends to remove virtualization from future versions of the Windows operating system as more applications are migrated to Windows Vista. For example, virtualization is disabled on 64-bit applications. </Citation>
Cela rendra les choses certainement plus rationnelles. Cependant, est-ce que cela ne gènera pas plus le fonctionnement de certains "vieux" programmes ?
Hello Jacques,
Tu as écrit :
Pas bien grave :-) , mais c'est même un peu plus compliqué. Regardes
ma réponse à aski, qui parle des pages 18 à 22 du document que tu as
indiqué.
L'erreur 5, c'est bien elle si il y a un problème de privilèges, on ne
l'obtiens que sous XP (ou précédent), pas sous Vista.
Ce principe de virtualisation a été mis en place, apparemment, pour
éviter que les utilisateurs modifient les droits d'accès sur les
répertoires ou les clés de registre, et garder une compatibilité avec
certains logiciel.
Mais il est bien précisé, que ce système est temporaire et ne sera pas
conservé dans les versions suivantes de l'OS :
<Citation>
Microsoft intends to remove virtualization from future versions of the
Windows operating system as more applications are migrated to Windows
Vista. For example, virtualization is disabled on 64-bit applications.
</Citation>
Cela rendra les choses certainement plus rationnelles.
Cependant, est-ce que cela ne gènera pas plus le fonctionnement de certains
"vieux" programmes ?
Pas bien grave :-) , mais c'est même un peu plus compliqué. Regardes ma réponse à aski, qui parle des pages 18 à 22 du document que tu as indiqué. L'erreur 5, c'est bien elle si il y a un problème de privilèges, on ne l'obtiens que sous XP (ou précédent), pas sous Vista.
Ce principe de virtualisation a été mis en place, apparemment, pour éviter que les utilisateurs modifient les droits d'accès sur les répertoires ou les clés de registre, et garder une compatibilité avec certains logiciel.
Mais il est bien précisé, que ce système est temporaire et ne sera pas conservé dans les versions suivantes de l'OS :
<Citation> Microsoft intends to remove virtualization from future versions of the Windows operating system as more applications are migrated to Windows Vista. For example, virtualization is disabled on 64-bit applications. </Citation>
Cela rendra les choses certainement plus rationnelles. Cependant, est-ce que cela ne gènera pas plus le fonctionnement de certains "vieux" programmes ?
Aski
Hello Jacques,
Tu as écrit :
A ta place j'éviterai de me baser sur l'erreur 5, car même en demandant des droits en écriture (KEY_WRITE) sur HKLM. Le code suivant : sKeyName = "SOFTWAREClassesPowerPoint.Application" retval = RegOpenKeyEx(HKEY_LOCAL_MACHINE, sKeyName, 0, _ KEY_WRITE, hKey) MsgBox "HKLM : " & retval RegCloseKey hKey
ne provoquera pas d'erreur 5 sous Vista (alors que on l'a sous XP). Cela est du à la virtualisation, voir page 18 du document indiqué par François. Te rappelles tu du fil avec Kiriasse concernant Program Files ?
bien pour les clés de registre c'est similaire. Au lieu d'écrire les clés dans HKLMSOFTWARE, elles seront écrites dans HKCUSOFTWAREClassesVirtualStore. Et de la même manière que pour les fichiers, cela est transparent, sauf que pour les fichiers on ne les voient pas à l'endroit qu'on pensait dans l'explorateur, et que pour les clés on ne les voient pas à l'endroit prévu via regedit.
C'e'st très ennuyeux car les clés modifiées peuvent concerner des programmes qui ne penseraont pas à chercher dans les clefs "viruelles".
Sinon, un petit truc pour avoir un libellé clair des retours d'API, et ainsi éviter certaines confusions :
Private Const FORMAT_MESSAGE_FROM_SYSTEM = &H1000 Private Declare Function FormatMessage Lib "kernel32" Alias "FormatMessageA" _ (ByVal dwFlags As Long, lpSource As Any, _ ByVal dwMessageId As Long, ByVal dwLanguageId As Long, _ ByVal lpBuffer As String, ByVal nSize As Long, Arguments As Long) As Long
Public Function FriendlyError(ErrNo As Long) As String Dim lResult As Long Dim Buffer As String * 256
lResult = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0, _ ErrNo, 0, Buffer, Len(Buffer), 0) If lResult > 0 Then FriendlyError = Left(Buffer, lResult - 2) & _ " (" & Format(ErrNo) & ")" Else FriendlyError = "Erreur numéro " & Format(ErrNo) End If End Function
Essaie avec :
MsgBox FriendyError (2)
Excellent, mais pour le moment je ne peux rapatrier les données de mon Dell/Vista qui vient d'avoir une panne matérielle : ventilateur qui s'emballe au point qu'il faut couper l'alimentation. On va vérifier l'efficacité du SAV de Dell. -- Cordialement Henri
Hello Jacques,
Tu as écrit :
A ta place j'éviterai de me baser sur l'erreur 5, car même en
demandant des droits en écriture (KEY_WRITE) sur HKLM. Le code
suivant :
sKeyName = "SOFTWAREClassesPowerPoint.Application"
retval = RegOpenKeyEx(HKEY_LOCAL_MACHINE, sKeyName, 0, _
KEY_WRITE, hKey)
MsgBox "HKLM : " & retval
RegCloseKey hKey
ne provoquera pas d'erreur 5 sous Vista (alors que on l'a sous XP).
Cela est du à la virtualisation, voir page 18 du document indiqué par
François.
Te rappelles tu du fil avec Kiriasse concernant Program Files ?
bien pour les clés de registre c'est similaire. Au lieu d'écrire les
clés dans HKLMSOFTWARE, elles seront écrites dans
HKCUSOFTWAREClassesVirtualStore. Et de la même manière que pour les
fichiers, cela est transparent, sauf que pour les fichiers on ne les
voient pas à l'endroit qu'on pensait dans l'explorateur, et que pour
les clés on ne les voient pas à l'endroit prévu via regedit.
C'e'st très ennuyeux car les clés modifiées peuvent concerner des programmes
qui ne penseraont pas à chercher dans les clefs "viruelles".
Sinon, un petit truc pour avoir un libellé clair des retours d'API, et
ainsi éviter certaines confusions :
Private Const FORMAT_MESSAGE_FROM_SYSTEM = &H1000
Private Declare Function FormatMessage Lib "kernel32" Alias
"FormatMessageA" _
(ByVal dwFlags As Long, lpSource As Any, _
ByVal dwMessageId As Long, ByVal dwLanguageId As Long, _
ByVal lpBuffer As String, ByVal nSize As Long, Arguments As
Long) As Long
Public Function FriendlyError(ErrNo As Long) As String
Dim lResult As Long
Dim Buffer As String * 256
lResult = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0, _
ErrNo, 0, Buffer, Len(Buffer), 0)
If lResult > 0 Then
FriendlyError = Left(Buffer, lResult - 2) & _
" (" & Format(ErrNo) & ")"
Else
FriendlyError = "Erreur numéro " & Format(ErrNo)
End If
End Function
Essaie avec :
MsgBox FriendyError (2)
Excellent, mais pour le moment je ne peux rapatrier les données de mon
Dell/Vista qui vient d'avoir une panne matérielle : ventilateur qui
s'emballe au point qu'il faut couper l'alimentation.
On va vérifier l'efficacité du SAV de Dell.
--
Cordialement
Henri
A ta place j'éviterai de me baser sur l'erreur 5, car même en demandant des droits en écriture (KEY_WRITE) sur HKLM. Le code suivant : sKeyName = "SOFTWAREClassesPowerPoint.Application" retval = RegOpenKeyEx(HKEY_LOCAL_MACHINE, sKeyName, 0, _ KEY_WRITE, hKey) MsgBox "HKLM : " & retval RegCloseKey hKey
ne provoquera pas d'erreur 5 sous Vista (alors que on l'a sous XP). Cela est du à la virtualisation, voir page 18 du document indiqué par François. Te rappelles tu du fil avec Kiriasse concernant Program Files ?
bien pour les clés de registre c'est similaire. Au lieu d'écrire les clés dans HKLMSOFTWARE, elles seront écrites dans HKCUSOFTWAREClassesVirtualStore. Et de la même manière que pour les fichiers, cela est transparent, sauf que pour les fichiers on ne les voient pas à l'endroit qu'on pensait dans l'explorateur, et que pour les clés on ne les voient pas à l'endroit prévu via regedit.
C'e'st très ennuyeux car les clés modifiées peuvent concerner des programmes qui ne penseraont pas à chercher dans les clefs "viruelles".
Sinon, un petit truc pour avoir un libellé clair des retours d'API, et ainsi éviter certaines confusions :
Private Const FORMAT_MESSAGE_FROM_SYSTEM = &H1000 Private Declare Function FormatMessage Lib "kernel32" Alias "FormatMessageA" _ (ByVal dwFlags As Long, lpSource As Any, _ ByVal dwMessageId As Long, ByVal dwLanguageId As Long, _ ByVal lpBuffer As String, ByVal nSize As Long, Arguments As Long) As Long
Public Function FriendlyError(ErrNo As Long) As String Dim lResult As Long Dim Buffer As String * 256
lResult = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0, _ ErrNo, 0, Buffer, Len(Buffer), 0) If lResult > 0 Then FriendlyError = Left(Buffer, lResult - 2) & _ " (" & Format(ErrNo) & ")" Else FriendlyError = "Erreur numéro " & Format(ErrNo) End If End Function
Essaie avec :
MsgBox FriendyError (2)
Excellent, mais pour le moment je ne peux rapatrier les données de mon Dell/Vista qui vient d'avoir une panne matérielle : ventilateur qui s'emballe au point qu'il faut couper l'alimentation. On va vérifier l'efficacité du SAV de Dell. -- Cordialement Henri
Jacques93
Aski a écrit :
Hello Jacques,
Tu as écrit :
[...]
bien pour les clés de registre c'est similaire. Au lieu d'écrire les clés dans HKLMSOFTWARE, elles seront écrites dans HKCUSOFTWAREClassesVirtualStore. Et de la même manière que pour les fichiers, cela est transparent, sauf que pour les fichiers on ne les voient pas à l'endroit qu'on pensait dans l'explorateur, et que pour les clés on ne les voient pas à l'endroit prévu via regedit.
C'e'st très ennuyeux car les clés modifiées peuvent concerner des programmes qui ne penseraont pas à chercher dans les clefs "viruelles".
Normalement c'est transparent pour la lecture et l'écriture. Le principal inconvénient que je vois pour l'instant est que les clés étant écrites dans HKCU...VirtualStore, à la place de HKLM, elles sont liées à un utilisateur et non plus à tous les utilisateurs, si j'ai bien compris.
Excellent, mais pour le moment je ne peux rapatrier les données de mon Dell/Vista qui vient d'avoir une panne matérielle : ventilateur qui s'emballe au point qu'il faut couper l'alimentation.
:-(
-- Cordialement,
Jacques.
Aski a écrit :
Hello Jacques,
Tu as écrit :
[...]
bien pour les clés de registre c'est similaire. Au lieu d'écrire les
clés dans HKLMSOFTWARE, elles seront écrites dans
HKCUSOFTWAREClassesVirtualStore. Et de la même manière que pour les
fichiers, cela est transparent, sauf que pour les fichiers on ne les
voient pas à l'endroit qu'on pensait dans l'explorateur, et que pour
les clés on ne les voient pas à l'endroit prévu via regedit.
C'e'st très ennuyeux car les clés modifiées peuvent concerner des programmes
qui ne penseraont pas à chercher dans les clefs "viruelles".
Normalement c'est transparent pour la lecture et l'écriture. Le
principal inconvénient que je vois pour l'instant est que les clés étant
écrites dans HKCU...VirtualStore, à la place de HKLM, elles sont liées
à un utilisateur et non plus à tous les utilisateurs, si j'ai bien compris.
Excellent, mais pour le moment je ne peux rapatrier les données de mon
Dell/Vista qui vient d'avoir une panne matérielle : ventilateur qui
s'emballe au point qu'il faut couper l'alimentation.
bien pour les clés de registre c'est similaire. Au lieu d'écrire les clés dans HKLMSOFTWARE, elles seront écrites dans HKCUSOFTWAREClassesVirtualStore. Et de la même manière que pour les fichiers, cela est transparent, sauf que pour les fichiers on ne les voient pas à l'endroit qu'on pensait dans l'explorateur, et que pour les clés on ne les voient pas à l'endroit prévu via regedit.
C'e'st très ennuyeux car les clés modifiées peuvent concerner des programmes qui ne penseraont pas à chercher dans les clefs "viruelles".
Normalement c'est transparent pour la lecture et l'écriture. Le principal inconvénient que je vois pour l'instant est que les clés étant écrites dans HKCU...VirtualStore, à la place de HKLM, elles sont liées à un utilisateur et non plus à tous les utilisateurs, si j'ai bien compris.
Excellent, mais pour le moment je ne peux rapatrier les données de mon Dell/Vista qui vient d'avoir une panne matérielle : ventilateur qui s'emballe au point qu'il faut couper l'alimentation.
:-(
-- Cordialement,
Jacques.
Jacques93
Aski a écrit :
Hello Jacques,
[...]
Cela rendra les choses certainement plus rationnelles. Cependant, est-ce que cela ne gènera pas plus le fonctionnement de certains "vieux" programmes ?
Là je vais être... normand, p'tet ben qu'oui, p'tet ben qu'non Qui vivra verra.
C'est ce qui est écrit, mais entre les annonces MS et la réalité il y a "parfois" comme des nuances qui tournent parfois au virage à 180 degrés
Et s'il est annoncé que cela ne sera pas conservé, rien ne dit que cela ne sera pas remplacé par une autre méthode, dont on ignore l'implémentation. Wait and See ...
-- Cordialement,
Jacques.
Aski a écrit :
Hello Jacques,
[...]
Cela rendra les choses certainement plus rationnelles.
Cependant, est-ce que cela ne gènera pas plus le fonctionnement de certains
"vieux" programmes ?
Là je vais être... normand, p'tet ben qu'oui, p'tet ben qu'non
Qui vivra verra.
C'est ce qui est écrit, mais entre les annonces MS et la réalité il y a
"parfois" comme des nuances qui tournent parfois au virage à 180 degrés
Et s'il est annoncé que cela ne sera pas conservé, rien ne dit que cela
ne sera pas remplacé par une autre méthode, dont on ignore
l'implémentation. Wait and See ...
Cela rendra les choses certainement plus rationnelles. Cependant, est-ce que cela ne gènera pas plus le fonctionnement de certains "vieux" programmes ?
Là je vais être... normand, p'tet ben qu'oui, p'tet ben qu'non Qui vivra verra.
C'est ce qui est écrit, mais entre les annonces MS et la réalité il y a "parfois" comme des nuances qui tournent parfois au virage à 180 degrés
Et s'il est annoncé que cela ne sera pas conservé, rien ne dit que cela ne sera pas remplacé par une autre méthode, dont on ignore l'implémentation. Wait and See ...
-- Cordialement,
Jacques.
Aski
Hello Jacques,
Là je vais être... normand, p'tet ben qu'oui, p'tet ben qu'non Qui vivra verra.
C'est ce qui est écrit, mais entre les annonces MS et la réalité il y a "parfois" comme des nuances qui tournent parfois au virage à 180 degrés Et s'il est annoncé que cela ne sera pas conservé, rien ne dit que cela ne sera pas remplacé par une autre méthode, dont on ignore l'implémentation. Wait and See ...
... et les pauvres mecs qui essaient de programmer pour Vista sont toujours à la recherche de documentation. :-(
Hello Jacques,
Là je vais être... normand, p'tet ben qu'oui, p'tet ben qu'non
Qui vivra verra.
C'est ce qui est écrit, mais entre les annonces MS et la réalité il y
a "parfois" comme des nuances qui tournent parfois au virage à 180
degrés
Et s'il est annoncé que cela ne sera pas conservé, rien ne dit que
cela ne sera pas remplacé par une autre méthode, dont on ignore
l'implémentation. Wait and See ...
... et les pauvres mecs qui essaient de programmer pour Vista sont toujours
à la recherche de documentation. :-(
Là je vais être... normand, p'tet ben qu'oui, p'tet ben qu'non Qui vivra verra.
C'est ce qui est écrit, mais entre les annonces MS et la réalité il y a "parfois" comme des nuances qui tournent parfois au virage à 180 degrés Et s'il est annoncé que cela ne sera pas conservé, rien ne dit que cela ne sera pas remplacé par une autre méthode, dont on ignore l'implémentation. Wait and See ...
... et les pauvres mecs qui essaient de programmer pour Vista sont toujours à la recherche de documentation. :-(