Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème d'accès au registre sous Vista

15 réponses
Avatar
aski
Bonjour aux cadors et aux autres,

Je n'arrive pas à ouvrir certaines clés du registre sous Vista et VB6
avec la fonction API classique :

RetVal = RegOpenKeyEx(HKEY_CLASSES_ROOT, sKeyName, 0, KEY_ALL_ACCESS,
hKey)

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

5 réponses

1 2
Avatar
Aski
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 ?
Avatar
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 ?

<http://groups.google.fr/group/microsoft.public.fr.vb/browse_thread/thread/9651f57b9c5f2bb2/3932a1483ee9e1f6?hl=fr&lnk=st&q=virtualstore+jacques93+group%3Amicrosoft.public.fr.vb#3932a1483ee9e1f6>



Bien sûr, j'ai été passionné par le téléfilm ;-)

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
Avatar
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.
Avatar
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.
Avatar
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. :-(
1 2