{"id":79,"date":"2025-06-13T22:09:33","date_gmt":"2025-06-13T22:09:33","guid":{"rendered":"https:\/\/loufab.alwaysdata.net\/blogaccess\/?p=79"},"modified":"2025-07-30T23:15:01","modified_gmt":"2025-07-30T23:15:01","slug":"access-la-persistance-2","status":"publish","type":"post","link":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/2025\/06\/13\/access-la-persistance-2\/","title":{"rendered":"ACCESS : La persistance (2)"},"content":{"rendered":"\n<p>Apr\u00e8s avoir parl\u00e9 dans un billet pr\u00e9c\u00e9dent de la persistance dans un fichier ini, nous allons poursuivre sur la technique de la base de registre.<\/p>\n\n\n\n<p>\u00c9crire dans la base de registre apporte, contrairement au fichier ini, un semblant de s\u00e9curit\u00e9. En effet il est moins ais\u00e9 de retrouver une valeur parmi les milliers existantes dans la base de registre que de consulter un fichier ini. La destination n&rsquo;est donc pas la m\u00eame.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Quels sont les moyens \u00e0 notre disposition ?<\/h1>\n\n\n\n<p>Gr\u00e2ce \u00e0 la biblioth\u00e8que <strong>Windows Script Host<\/strong> que l&rsquo;on retrouve dans les r\u00e9f\u00e9rences sous le nom de <strong>Microsoft Scripting Runtime<\/strong> on peut invoquer diff\u00e9rentes commandes de gestion de la base de registre.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>D\u00e9claration<\/strong><\/h1>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"visualbasic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Dim wsh As Object \nSet wsh = CreateObject(\"WScript.Shell\") \n... instructions \nSet wsh = Nothing<\/pre>\n\n\n\n<p>La d\u00e9claration de cette biblioth\u00e8que peut se faire en early ou late binding (cf <a href=\"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/2025\/06\/13\/vba-early-ou-late-binding-quest-ce-que-cest-comment-choisir\/\" target=\"_blank\" rel=\"noopener noreferrer\">Early ou LateBinding<\/a>). C&rsquo;est la deuxi\u00e8me m\u00e9thode que nous allons utiliser ici.<\/p>\n\n\n\n<p>Le mod\u00e8le est toujours le m\u00eame, d\u00e9claration, instanciation, utilisation, lib\u00e9ration.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>Lecture<\/strong><\/h1>\n\n\n\n<p>Pour la lecture on utilise l&rsquo;instruction&nbsp;RegRead en pr\u00e9cisant le chemin de la clef \u00e0 lire.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"visualbasic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Chemin = wsh.RegRead(\"HKEY_CURRENT_USER\\Software\\Microsoft\\Office\\\" &amp;\u00a0_ \n      Val(SysCmd(acSysCmdAccessVer)) &amp; \".0\\Access\\Security\\\" &amp; _ \n      \"Trusted Locations\\mon application\\Path\"<\/pre>\n\n\n\n<p>En retour la fonction renvoi le contenu de la clef. Dans cet exemple on interroge la base de registre pour conna\u00eetre l&#8217;emplacement approuv\u00e9 pour \u00ab\u00a0mon application\u00a0\u00bb.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Ecriture<\/h1>\n\n\n\n<p>De la m\u00eame mani\u00e8re on peut \u00e9crire une valeur ou&nbsp;cr\u00e9er une clef \u00e0 l&rsquo;aide de l&rsquo;instruction RegWrite.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"visualbasic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">wsh.RegWrite \"HKEY_CURRENT_USER\\Software\\Microsoft\\Office\\\" &amp;\u00a0_\n \u00a0\u00a0\u00a0\u00a0\u00a0 Val(SysCmd(acSysCmdAccessVer)) &amp; \".0\\Access\\Security\\\" &amp; _ \n       \"Trusted Locations\\\" &amp; vNameProduit &amp; \"\\Path\", _ \n       \"c:\\application access\\mon application\"<\/pre>\n\n\n\n<p>Le premier param\u00e8tre&nbsp;est le chemin de la clef de registre et le second la valeur \u00e0 \u00e9crire.<\/p>\n\n\n\n<p>Si la clef (le chemin) n&rsquo;existe pas, elle est cr\u00e9\u00e9e.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Conclusion<\/h1>\n\n\n\n<p>Comme nous l&rsquo;avons vu rien de sorcier dans l&rsquo;utilisation de ces instructions. Par contre il est fortement conseill\u00e9 d&rsquo;avoir les bases de connaissances minimales&nbsp;de ce qu&rsquo;est la&nbsp;base de registre. En effet, si la manipulation d&rsquo;un fichier ini (cf <a href=\"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/2025\/06\/13\/access-la-persistance-1\/\" target=\"_blank\" rel=\"noopener noreferrer\">Access et la persistance (1)<\/a>) pour g\u00e9rer de la persistance n&rsquo;est pas critique, manipuler la base de registre l&rsquo;est sans aucun doute. Prenez les pr\u00e9cautions d&rsquo;usage avant la manipuler.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Apr\u00e8s avoir parl\u00e9 dans un billet pr\u00e9c\u00e9dent de la persistance dans un fichier ini, nous allons poursuivre sur la technique de la base de registre. \u00c9crire dans la base de registre apporte, contrairement au fichier ini, un semblant de s\u00e9curit\u00e9. &hellip; <a href=\"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/2025\/06\/13\/access-la-persistance-2\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,6],"tags":[11,7],"class_list":["post-79","post","type-post","status-publish","format-standard","hentry","category-access","category-code-vba","tag-access","tag-code-vba"],"_links":{"self":[{"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/posts\/79","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/comments?post=79"}],"version-history":[{"count":6,"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/posts\/79\/revisions"}],"predecessor-version":[{"id":298,"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/posts\/79\/revisions\/298"}],"wp:attachment":[{"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/media?parent=79"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/categories?post=79"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/tags?post=79"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}