[Résolu] [Calc] Consultation de la base de registre Windows

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
bonsaiko
Membre OOrganisé
Membre OOrganisé
Messages : 61
Inscription : 12 oct. 2023 14:37

[Résolu] [Calc] Consultation de la base de registre Windows

Message par bonsaiko »

Bonsoir,

J'avais cru lire quelque part qu'on ne pouvait pas lire le registre Windows depuis LO... j'avais donc mis ça de côté dans mon code mais ça m'a paru bizarre donc je viens de refaire une recherche et apparamment c'est faisable - je trouvais ça bizarre aussi...

Cela dit c'est un peu comme le reste, je trouve qu'il est très difficile de trouver de la doc, ou alors je cherche mal ?

Est-ce que vous pourriez me dire comment faire ou m'orienter vers la doc adéquate ?
Je précise que j'ai déjà cherché sur le net avant de demander ici.

Merci par avance.

La modération vous a écrit: Titre modifié pour plus de clarté : [Calc] Consultation du registre depuis macro
Veillez à ne pas employer de terme implicite puisque toutes les questions dans cette section portent forcément sur des macros

Dernière modification par bonsaiko le 28 nov. 2023 19:33, modifié 3 fois.
Libre Office 7.6.2.1 Windows Server
Avatar de l’utilisateur
ddorange
Membre hOOnoraire
Membre hOOnoraire
Messages : 121
Inscription : 23 déc. 2015 18:49
Localisation : Annecy

Re: [Calc] Consultation du registre depuis macro

Message par ddorange »

Bonjour,
Voici un exemple de lecture et d'écriture d'une clé du registre :

Code : Tout sélectionner

Option VBASupport 1

Dim name As String, value As String
Dim myWS As Object
Set myWS = CreateObject("WScript.Shell")
name = "HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Word\Security\VBAWarnings"
'On lit la valeur d'une clé si elle existe
If RegKeyExists(name) Then value = myWS.RegRead(name)
'On modifie la valeur de la clé name
myWS.RegWrite name, "1", "REG_DWORD"
[.../...]
'On rétablit la valeur initiale de la clé
If Len(value) > 0 Then myWS.RegWrite name, value, "REG_DWORD"

	Rem fonction pour tester l'existence d'une clé du registre Windows
Function RegKeyExists(strKey As String) As Boolean
	dim bExists As Boolean
	dim wshShell As Object
	ssig="Unable to open registry key"
	
	set wshShell= CreateObject("WScript.Shell")
	'strKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Security\VBAWarnings"
	on error resume next
	present = WshShell.RegRead(strKey)
	if err.number<>0 then
	    if right(strKey,1)="\" then    'strKey is a registry key
	        if instr(1,err.description,ssig,1)<>0 then
	            bExists=true
	        else
	            bExists=false
	        end if
	    else    'strKey is a registry valuename
	        bExists=false
	    end if
	    err.clear
	else
	    bExists=true
	end if
	on error goto 0
	RegKeyExists = bExists
End Function
LibreOffice 24.2 et OpenOffice 4.1.15 sous Ubuntu 23.10, Windows 7, Windows 10, MacOs Sonoma
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25976
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Consultation du registre depuis macro

Message par Dude »

Salut,
bonsaiko a écrit : 19 oct. 2023 22:46 J'avais cru lire quelque part qu'on ne pouvait pas lire le registre Windows depuis LO
Où ça ? Précise un lien pour cette ineptie.
bonsaiko a écrit : 19 oct. 2023 22:46 Je précise que j'ai déjà cherché sur le net avant de demander ici.
Depuis bientôt 20 ans qu'existe ce forum, il est très difficile de ne pas trouver une question qui n'a pas déjà été postée.
Donc, il faut d'abord faire une recherche ici même : viewtopic.php?t=42005&hilit=lire+base+registre+windows
Bien sûr, tout dépend des droits que tu auras sur le système. Calc ne pourra rien lire si l'UAC te bloque.
bonsaiko a écrit : 19 oct. 2023 22:46 Cela dit c'est un peu comme le reste, je trouve qu'il est très difficile de trouver de la doc
Contrairement à Microsoft, un projet libre n'a aucun salarié employé à rédiger de la documentation.
Tout repose sur des bénévoles dont tu peux faire partie : enrichissez la documentation


ddorange a écrit : 20 oct. 2023 06:20 Voici un exemple de lecture et d'écriture d'une clé du registre
L'exemple donné est faux :

Code : Tout sélectionner

Option VBASupport 1
Il n'y a pas besoin de cette ligne (cf. l'exemple donné en 2012 par bm92)
Avatar de l’utilisateur
ddorange
Membre hOOnoraire
Membre hOOnoraire
Messages : 121
Inscription : 23 déc. 2015 18:49
Localisation : Annecy

Re: [Calc] Consultation du registre depuis macro

Message par ddorange »

Au lieu de
l'exemple est faux
la formulation
l'exemple fonctionne mais la ligne Option VBASupport = 1 n'est pas utile
est plus correcte. :D
LibreOffice 24.2 et OpenOffice 4.1.15 sous Ubuntu 23.10, Windows 7, Windows 10, MacOs Sonoma
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25976
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Consultation du registre depuis macro

Message par Dude »

ddorange a écrit : 20 oct. 2023 07:00 l'exemple fonctionne
Non, ton exemple ne fonctionne pas tel que tu l'exposes.
Les premières lignes ne sont pas insérées dans une procédure.

Le code donné par le maître bm92 (auteur de la bible) fonctionne et en plus, est détaillé.
Avatar de l’utilisateur
ddorange
Membre hOOnoraire
Membre hOOnoraire
Messages : 121
Inscription : 23 déc. 2015 18:49
Localisation : Annecy

Re: [Calc] Consultation du registre depuis macro

Message par ddorange »

Dude a écrit : 20 oct. 2023 06:23 Tout repose sur des bénévoles dont tu peux faire partie : enrichissez la documentation
Je ne suis pas sûr que le ton que tu utilises pour t'adresser aux membres qui font l'effort de répondre aux questions leur donnent très envie de "devenir bénévoles". Un peu de bienveillance me semblerait utile. :)
LibreOffice 24.2 et OpenOffice 4.1.15 sous Ubuntu 23.10, Windows 7, Windows 10, MacOs Sonoma
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 639
Inscription : 09 août 2017 22:15

Re: [Calc] Consultation de la base de registre Windows

Message par Jurassic Pork »

hello,
dans le python d'openoffice et de libreoffice, il y a le module winreg qui permet d'accéder à la base de registres Windows.
Exemple OpenOffice :
RegistryOpenOffice.png
Exemple LibreOffice :
RegistryLibreOffice.png
Donc avec une macro en python on peut accèder à la base de registres Windows avec O.O ou L.O
Ami calmant, J.P
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
bonsaiko
Membre OOrganisé
Membre OOrganisé
Messages : 61
Inscription : 12 oct. 2023 14:37

Re: [Calc] Consultation de la base de registre Windows

Message par bonsaiko »

Merci pour vos réponses, je vais tester tout ça.
Libre Office 7.6.2.1 Windows Server
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9821
Inscription : 28 août 2010 08:45

Re: [Résolu] [Calc] Consultation de la base de registre Windows

Message par micmac »

Bonjour,

Veuillez clôturer votre précédent sujet comme c'est prévu.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
OpenOffice > Outils > Options sur Windows = OpenOffice > Préférences sur macOS
bonsaiko
Membre OOrganisé
Membre OOrganisé
Messages : 61
Inscription : 12 oct. 2023 14:37

Re: [Calc] Consultation de la base de registre Windows

Message par bonsaiko »

Je ne comprends pas... J'ai tout mis en résolu. Qu'est-ce que j'ai mal fait ?!
Libre Office 7.6.2.1 Windows Server
bonsaiko
Membre OOrganisé
Membre OOrganisé
Messages : 61
Inscription : 12 oct. 2023 14:37

Re: [Calc] Consultation de la base de registre Windows

Message par bonsaiko »

Bonjour,

Je rouvre ce fil car j'ai toujours un souci avec la lecture dans le registre Windows.

Voici mon code :

Code : Tout sélectionner

wsh = CreateObject("WScript.Shell")
keyName = "HKEY_LOCAL_MACHINE\SOFTWARE\TestDirectory\"
If RegKeyExists(name) Then 
	readValue = wsh.RegRead(keyName)
	MsgBox "readValue=" & readValue
Else 
	MsgBox keyName & " doesn't exist"
End If
qui me retourne une chaine vide pour readValue

Pour reprendre depuis le début, je vous explique ce que j'essaie de faire : en passant directement dans la registry, je fais une recherche d'une chaine appelée "CheminCommun" et j'arrive bien à la trouver dans "HKEY_LOCAL_MACHINE\SOFTWARE\TestDirectory"

Donc ce que je cherche à faire dans la macro, c'est aller dans "HKEY_LOCAL_MACHINE\SOFTWARE\TestDirectory" et rechercher "CheminCommun" pour récupérer ce qu'il y a dedans, en l'occurrence c'est un chemin réseau.

Alors je ne comprends pas pourquoi readValue me retourne une chaine vide...

Est-ce que quelqu'un pourrait m'aider ?

Merci par avance.
Libre Office 7.6.2.1 Windows Server
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25976
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Consultation de la base de registre Windows

Message par Dude »

Assure toi d'avoir les droits suffisants pour lire le registre.
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 639
Inscription : 09 août 2017 22:15

Re: [Calc] Consultation de la base de registre Windows

Message par Jurassic Pork »

bonsaiko a écrit : 22 nov. 2023 11:20 Pour reprendre depuis le début, je vous explique ce que j'essaie de faire : en passant directement dans la registry, je fais une recherche d'une chaine appelée "CheminCommun" et j'arrive bien à la trouver dans "HKEY_LOCAL_MACHINE\SOFTWARE\TestDirectory"

Donc ce que je cherche à faire dans la macro, c'est aller dans "HKEY_LOCAL_MACHINE\SOFTWARE\TestDirectory" et rechercher "CheminCommun" pour récupérer ce qu'il y a dedans, en l'occurrence c'est un chemin réseau.
Ta clé CheminCommun est de quel type ?
REG_BINARY Binary data in any form.
REG_DWORD A 32-bit number.
REG_DWORD_LITTLE_ENDIAN A 32-bit number in little-endian format. Windows is designed to run on little-endian computer architectures. Therefore, this value is defined as REG_DWORD in the Windows header files.
REG_DWORD_BIG_ENDIAN A 32-bit number in big-endian format. Some UNIX systems support big-endian architectures.
REG_EXPAND_SZ A null-terminated string that contains unexpanded references to environment variables, for example, %PATH%. It's either a Unicode or an ANSI string, depending on whether you use the Unicode or ANSI functions. To expand the environment variable references, use the ExpandEnvironmentStrings function.
REG_LINK A null-terminated Unicode string that contains the target path of a symbolic link that was created by calling the RegCreateKeyEx function with REG_OPTION_CREATE_LINK.
REG_MULTI_SZ A sequence of null-terminated strings, terminated by an empty string (\0). The following is an example: String1\0String2\0String3\0LastString\0\0. The first \0 terminates the first string, the second-from-last \0 terminates the last string, and the final \0 terminates the sequence. Note that the final terminator must be factored into the length of the string.
REG_NONE No defined value type.
REG_QWORD A 64-bit number.
REG_QWORD_LITTLE_ENDIAN A 64-bit number in little-endian format. Windows is designed to run on little-endian computer architectures. Therefore, this value is defined as REG_QWORD in the Windows header files.
REG_SZ A null-terminated string. It's either a Unicode or an ANSI string, depending on whether you use the Unicode or ANSI functions.
String values
Ami calmant, J.P
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 639
Inscription : 09 août 2017 22:15

Re: [Calc] Consultation de la base de registre Windows

Message par Jurassic Pork »

bonsaiko pas la peine de me "balancer" des messages par courriel, je ne répond pas par cette voie là :mrgreen: . Il faut que tout le monde en profite dans le forum.
Si l'application dont on veut voir les clés dans la base de registre est une Application 32 bits sur une machine 64 bits, il faut aller voir dans la branche Wow6432Node de la base de registre :
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node
Voir dans un de mes messages précédent l'exemple en python : OpenOffice est en 32 bits; LibreOffice est en 64 bits
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
bonsaiko
Membre OOrganisé
Membre OOrganisé
Messages : 61
Inscription : 12 oct. 2023 14:37

Re: [Calc] Consultation de la base de registre Windows

Message par bonsaiko »

OK je comprends. Merci de ton aide.
Libre Office 7.6.2.1 Windows Server