SURVEILLER LA CLÉ OPENSAVEMRU DU REGISTRE

Signaler
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
-
Messages postés
288
Date d'inscription
jeudi 28 octobre 2004
Statut
Membre
Dernière intervention
3 janvier 2017
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/37559-surveiller-la-cle-opensavemru-du-registre

Messages postés
288
Date d'inscription
jeudi 28 octobre 2004
Statut
Membre
Dernière intervention
3 janvier 2017

J'ai trouvé un code qui permet de faire ce que je cherchais en utilisant:
Public Declare Function RegQueryInfoKey Lib "advapi32.dll" Alias "RegQueryInfoKeyA" ( _
ByVal hKey As Long, _
ByVal lpClass As String, _
lpcbClass As Long, _
ByVal lpReserved As Long, _
lpcSubKeys As Long, _
lpcbMaxSubKeyLen As Long, _
lpcbMaxClassLen As Long, _
lpcValues As Long, _
lpcbMaxValueNameLen As Long, _
lpcbMaxValueLen As Long, _
lpcbSecurityDescriptor As Long, _
lpftLastWriteTime As FILETIME) As Long

Et pour tester
Private Sub Command6_Click()
Dim lResult As Long
Dim hKey As Long
Dim lNumKeys As Long ' Number of subkeys of open key
Dim lSubkeyNameLen As Long ' Length of the longest subkey name
Dim ft As FILETIME

Dim sRegPath As String


If RegOpenKeyEx(Hkey_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSaveMRU", 0, KEY_READ, hKey) = ERROR_SUCCESS Then
' Get subkey information
lResult = RegQueryInfoKey(hKey, vbNullString, 0, 0, lNumKeys, lSubkeyNameLen, _
0, 0, 0, 0, 0, ft)
If lResult = ERROR_SUCCESS Then
Dim sMsg As String
sMsg = "Key: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSaveMRU" & vbCrLf & vbCrLf
sMsg = sMsg & "Subkeys: " & lNumKeys & vbCrLf
sMsg = sMsg & "Longest subkey name: " & lSubkeyNameLen & vbCrLf
MsgBox sMsg
End If
' Use subkey information to enumerate subkeys
Dim lCtr As Long
Dim sBuffer As String
Dim lBuffer As Long
Dim hSubkey As Long
' Loop as many times as there are subkeys
For lCtr = 0 To lNumKeys - 1
' Initialize buffer to hold name to be 1 greater than maximum length
sBuffer = Space(lSubkeyNameLen) & Chr(0)
lBuffer = Len(sBuffer)
RegEnumKeyEx hKey, lCtr, sBuffer, lBuffer, 0, vbNullString, 0, ft
' Trim returned buffer to extract key name
sBuffer = Left(sBuffer, lBuffer)

sMsg = "Key " & lCtr & ": " & sBuffer & vbCrLf

' Open subkey
RegOpenKeyEx hKey, sBuffer, 0, KEY_READ, hSubkey
sMsg = sMsg & " Returned handle " & Hex(hSubkey) & vbCrLf
MsgBox sMsg

RegCloseKey hSubkey
Next
RegCloseKey hKey
Else
MsgBox "Unable to open key: " & lResult
End If

End Sub
Messages postés
288
Date d'inscription
jeudi 28 octobre 2004
Statut
Membre
Dernière intervention
3 janvier 2017

Merci Draluorg pour ton idée de lire HKey_Class_Root pour en extraire les extensions.
J'ai trouvé un source qui les lit mais comme j'en trouve 763, je ne veux pas remplir ma Combo avec tout ça.
Ce que je voudrais faire, c'est les lire dans OpenSaveMRU, mais pour le moment je sèche.
Messages postés
625
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
25 novembre 2010

re,

Eh bin si tu surveille la cle Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSaveMRU\
lorsque tu es notifie tu sais que c'est cette cle la qui a ete modifiee, apres tu scanne juste les valeurs pour savoir quelle est la modif...

Sinon pour enumerer les extentions dans classe root, je dirais plutot

Extension = Combo1.List(B)

If left(Extension, 1) <> "." Then 'Sortie

en oubliant pas que la premiere cle est "*"

++
Messages postés
288
Date d'inscription
jeudi 28 octobre 2004
Statut
Membre
Dernière intervention
3 janvier 2017

NHenry ton idée est bonne.J'ai essayé, c'est OK si on met
Combo1.ListCount
Tu as dû voir que j'avais utilisé un anti-dépassement peu glorieux:
If Combo1.List(B) = "zip" Then 'Sortie si fin atteinte
Exit Sub
End If
Tu me dis d'énumérer les clé du registre mais justement je n'y arrive pas.

******************************************
Draluorg
Merci.J'avais trouvé et essayé le source de:
http://www.allapi.net/apilist/5B7128D345F8EBCE2557C095EED673D5.html
mais il ne dit pas où s'est fait la modif ni ce qui a été modifié.

*******************************************
Eldim
Je ne suis pas parano, car je restaure quand j'ai un pépin, mais je trouve anormal que l'on nous stocke nos actions.
De plus il existe plein d'autres clés qui sauvent des MRU.
Messages postés
956
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
21 août 2014
1
bonjour,

vive la parano...
ça sauvegarde pas énormément... vu le nombre de pc dans le monde t'inquiète tu sera pas espioné lol
Afficher les 13 commentaires