1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| Option Explicit
Const HKLM = &H80000002
Const KEY_QUERY_VALUE = &H1
Const KEY_SET_VALUE = &H2
Const KEY_NOTIFY = &H10
Const STANDARD_RIGHTS_ALL = &H1F0000
Const KEY_CREATE_SUB_KEY = &H4
Const KEY_ENUMERATE_SUB_KEYS = &H8
Const KEY_CREATE_LINK = &H20
Const SYNCHRONIZE = &H100000
Const sPath = "Software\Microsoft\Windows\CurrentVersion\App Paths\"
Const REG_SZ = 1
Dim KEY_ALL_ACCESS, lRC, bGranted, objRegistry, I, sNames, iTypes, sValue, sMsg
KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
Set objRegistry = GetObject("WinMgmts:root\default:StdRegProv")
lRC = objRegistry.EnumValues(HKLM, sPath & "AcroRd32.exe", sNames, iTypes)
If (lRC = 0) And (Err.Number = 0) Then
For i = LBound(iTypes) To UBound(iTypes)
Select Case iTypes(i)
Case REG_SZ
lRC = objRegistry.GetStringValue(HKLM , sPath & "AcroRd32.exe", sNames(i), sValue)
If sNames(i) = "" Then 'Valeur dénommée (par défaut) ou (default) si Fr ou En
sMsg = sValue
Exit For
End If
End Select
Next
End If
MsgBox sMsg
lRC = objRegistry.CheckAccess(HKLM, sPath, KEY_ALL_ACCESS, bGranted)
If (lRC = 0) And (Err.Number = 0) Then
If bGranted = True Then
objRegistry.CreateKey HKLM, sPath & "pdftotext32.exe\"
objRegistry.SetStringValue HKLM, sPath & "pdftotext32.exe\", "", Replace(sMsg, "AcroRd32.exe", "pdftotext32.exe")
MsgBox bGranted ' Juste pour voir si l'accès à la clé sPath est permis ou non
End If
Else
'Une erreur est survenue
End If |
Partager