{"id":948,"date":"2025-12-02T17:37:15","date_gmt":"2025-12-02T16:37:15","guid":{"rendered":"https:\/\/www.silverice.it\/IpercubeTechWP1\/?page_id=948"},"modified":"2025-12-02T17:57:01","modified_gmt":"2025-12-02T16:57:01","slug":"environment-variables-helper","status":"publish","type":"page","link":"https:\/\/www.silverice.it\/IpercubeTechWP1\/vb-classes\/environment-variables-helper\/","title":{"rendered":"Environment  Variables Helper"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Provides helper methods for reading and writing environment variables at both user and machine scope.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Using this static class to read\/write environment variable avoid the issue of settings a variable with the classic <em>Environment.SetEnvironmentVariable<\/em>, where a variable value is not immediately available after it&#8217;s set.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Writes are performed directly to the Windows Registry.<\/li>\n\n\n\n<li>After changes, a broadcast message is sent to notify the system of the update.<\/li>\n\n\n\n<li>Supports both machine-wide and per-user environment variables.<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:75%\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column page-snippet is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Geist-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-Geist-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(3 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">VB<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Imports System.Runtime.InteropServices\nImports Microsoft.Win32\n\nPublic NotInheritable Class EnvVarHelper\n\n    ' Broadcast message to notify the system that environment variables have changed\n    &lt;DllImport(\"user32.dll\", SetLastError:=True, CharSet:=CharSet.Auto)>\n    Private Shared Function SendMessageTimeout(\n        hWnd As IntPtr,\n        Msg As UInteger,\n        wParam As UIntPtr,\n        lParam As String,\n        fuFlags As UInteger,\n        uTimeout As UInteger,\n        ByRef lpdwResult As UIntPtr) As IntPtr\n    End Function\n\n    Private Const HWND_BROADCAST As Integer = &amp;HFFFF\n    Private Const WM_SETTINGCHANGE As UInteger = &amp;H1A\n    Private Const SMTO_ABORTIFHUNG As UInteger = &amp;H2\n\n    ' Registry paths for Machine and User environment variables\n    Private Const MachineEnvKeyPath As String = \"SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment\"\n    Private Const UserEnvKeyPath As String = \"Environment\"   ' under HKEY_CURRENT_USER\n\n    ''' &lt;summary>\n    ''' Sets or updates a system-wide (machine-level) environment variable.\n    ''' &lt;\/summary>\n    ''' &lt;category>Methods&lt;\/category>\n    ''' &lt;param name=\"varName\">The name of the environment variable to set.&lt;\/param>\n    ''' &lt;param name=\"value\">The value to assign to the variable.&lt;\/param>\n    ''' &lt;remarks>\n    ''' &lt;list type=\"bullet\">\n    '''   &lt;item>&lt;description>Writes to HKEY_LOCAL_MACHINE, under the standard environment key.&lt;\/description>&lt;\/item>\n    '''   &lt;item>&lt;description>Requires administrative privileges to succeed.&lt;\/description>&lt;\/item>\n    '''   &lt;item>&lt;description>Broadcasts WM_SETTINGCHANGE to inform the system of the update.&lt;\/description>&lt;\/item>\n    ''' &lt;\/list>\n    ''' &lt;\/remarks>\n    Public Shared Sub SetMachineEnvVar(varName As String, value As String)\n        Using key As RegistryKey = Registry.LocalMachine.OpenSubKey(MachineEnvKeyPath, writable:=True)\n            If key Is Nothing Then\n                Throw New InvalidOperationException(\"Cannot open the Machine Environment registry key.\")\n            End If\n\n            ' Write REG_SZ\n            key.SetValue(varName, value, RegistryValueKind.String)\n        End Using\n\n        NotifyEnvironmentChanged()\n    End Sub\n\n    ''' &lt;summary>\n    ''' Retrieves the value of a system-wide (machine-level) environment variable.\n    ''' &lt;\/summary>\n    ''' &lt;category>Methods&lt;\/category>\n    ''' &lt;param name=\"varName\">The name of the environment variable to retrieve.&lt;\/param>\n    ''' &lt;returns>The value of the environment variable, or &lt;c>Nothing&lt;\/c> if not found.&lt;\/returns>\n    ''' &lt;remarks>\n    ''' &lt;list type=\"bullet\">\n    '''   &lt;item>&lt;description>Reads from HKEY_LOCAL_MACHINE under the environment key.&lt;\/description>&lt;\/item>\n    '''   &lt;item>&lt;description>Returns null if the variable does not exist or the registry key is missing.&lt;\/description>&lt;\/item>\n    ''' &lt;\/list>\n    ''' &lt;\/remarks>\n    Public Shared Function GetMachineEnvVar(varName As String) As String\n        Using key As RegistryKey = Registry.LocalMachine.OpenSubKey(MachineEnvKeyPath, writable:=False)\n            If key Is Nothing Then Return Nothing\n\n            Dim raw As Object = key.GetValue(varName, Nothing)\n            If raw Is Nothing Then Return Nothing\n\n            Return Convert.ToString(raw)\n        End Using\n    End Function\n\n    ''' &lt;summary>\n    ''' Sets or updates a per-user environment variable.\n    ''' &lt;\/summary>\n    ''' &lt;category>Methods&lt;\/category>\n    ''' &lt;param name=\"varName\">The name of the environment variable to set.&lt;\/param>\n    ''' &lt;param name=\"value\">The value to assign to the variable.&lt;\/param>\n    ''' &lt;remarks>\n    ''' &lt;list type=\"bullet\">\n    '''   &lt;item>&lt;description>Writes to HKEY_CURRENT_USER under the Environment key.&lt;\/description>&lt;\/item>\n    '''   &lt;item>&lt;description>Does not require administrative rights.&lt;\/description>&lt;\/item>\n    '''   &lt;item>&lt;description>Sends WM_SETTINGCHANGE message to notify the system.&lt;\/description>&lt;\/item>\n    ''' &lt;\/list>\n    ''' &lt;\/remarks>\n    Public Shared Sub SetUserEnvVar(varName As String, value As String)\n        Using key As RegistryKey = Registry.CurrentUser.OpenSubKey(UserEnvKeyPath, writable:=True)\n            If key Is Nothing Then\n                Throw New InvalidOperationException(\"Cannot open the User Environment registry key.\")\n            End If\n\n            ' Write REG_SZ\n            key.SetValue(varName, value, RegistryValueKind.String)\n        End Using\n\n        NotifyEnvironmentChanged()\n    End Sub\n\n    ''' &lt;summary>\n    ''' Retrieves the value of a per-user environment variable.\n    ''' &lt;\/summary>\n    ''' &lt;category>Methods&lt;\/category>\n    ''' &lt;param name=\"varName\">The name of the environment variable to retrieve.&lt;\/param>\n    ''' &lt;returns>The value of the environment variable, or &lt;c>Nothing&lt;\/c> if not found.&lt;\/returns>\n    ''' &lt;remarks>\n    ''' &lt;list type=\"bullet\">\n    '''   &lt;item>&lt;description>Reads from HKEY_CURRENT_USER under the Environment key.&lt;\/description>&lt;\/item>\n    '''   &lt;item>&lt;description>Returns null if the variable does not exist or access is denied.&lt;\/description>&lt;\/item>\n    ''' &lt;\/list>\n    ''' &lt;\/remarks>\n    Public Shared Function GetUserEnvVar(varName As String) As String\n        Using key As RegistryKey = Registry.CurrentUser.OpenSubKey(UserEnvKeyPath, writable:=False)\n            If key Is Nothing Then Return Nothing\n\n            Dim raw As Object = key.GetValue(varName, Nothing)\n            If raw Is Nothing Then Return Nothing\n\n            Return Convert.ToString(raw)\n        End Using\n    End Function\n\n    Private Shared Sub NotifyEnvironmentChanged()\n        Dim result As UIntPtr = UIntPtr.Zero\n\n        SendMessageTimeout(CType(HWND_BROADCAST, IntPtr),\n                           WM_SETTINGCHANGE,\n                           UIntPtr.Zero,\n                           \"Environment\",\n                           SMTO_ABORTIFHUNG,\n                           5000,\n                           result)\n    End Sub\n\nEnd Class\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D4D4D4\">Imports System.Runtime.InteropServices<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Imports Microsoft.Win32<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">Public<\/span><span style=\"color: #D4D4D4\"> NotInheritable<\/span><span style=\"color: #569CD6\"> Class <\/span><span style=\"color: #D4D4D4\">EnvVarHelper<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39; Broadcast message to notify the system that environment variables have changed<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    &lt;<\/span><span style=\"color: #DCDCAA\">DllImport<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;user32.dll&quot;<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #9CDCFE\"> SetLastError<\/span><span style=\"color: #D4D4D4\">:=<\/span><span style=\"color: #569CD6\">True<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #9CDCFE\"> CharSet<\/span><span style=\"color: #D4D4D4\">:=CharSet.<\/span><span style=\"color: #9CDCFE\">Auto<\/span><span style=\"color: #D4D4D4\">)&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">Private<\/span><span style=\"color: #D4D4D4\"> Shared<\/span><span style=\"color: #569CD6\"> Function <\/span><span style=\"color: #DCDCAA\">SendMessageTimeout<\/span><span style=\"color: #D4D4D4\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        hWnd As <\/span><span style=\"color: #4EC9B0\">IntPtr<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        Msg As <\/span><span style=\"color: #4EC9B0\">UInteger<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        wParam As <\/span><span style=\"color: #4EC9B0\">UIntPtr<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        lParam As <\/span><span style=\"color: #4EC9B0\">String<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        fuFlags As <\/span><span style=\"color: #4EC9B0\">UInteger<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        uTimeout As <\/span><span style=\"color: #4EC9B0\">UInteger<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        ByRef lpdwResult As <\/span><span style=\"color: #4EC9B0\">UIntPtr<\/span><span style=\"color: #D4D4D4\">) As <\/span><span style=\"color: #4EC9B0\">IntPtr<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">End Function<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">Private Const <\/span><span style=\"color: #D4D4D4\">HWND_BROADCAST As <\/span><span style=\"color: #4EC9B0\">Integer<\/span><span style=\"color: #D4D4D4\"> = &amp;<\/span><span style=\"color: #9CDCFE\">HFFFF<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">Private Const <\/span><span style=\"color: #D4D4D4\">WM_SETTINGCHANGE As <\/span><span style=\"color: #4EC9B0\">UInteger<\/span><span style=\"color: #D4D4D4\"> = &amp;<\/span><span style=\"color: #9CDCFE\">H1A<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">Private Const <\/span><span style=\"color: #D4D4D4\">SMTO_ABORTIFHUNG As <\/span><span style=\"color: #4EC9B0\">UInteger<\/span><span style=\"color: #D4D4D4\"> = &amp;<\/span><span style=\"color: #9CDCFE\">H2<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39; Registry paths for Machine and User environment variables<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">Private Const <\/span><span style=\"color: #D4D4D4\">MachineEnvKeyPath As <\/span><span style=\"color: #4EC9B0\">String<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #CE9178\">&quot;SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">Private Const <\/span><span style=\"color: #D4D4D4\">UserEnvKeyPath As <\/span><span style=\"color: #4EC9B0\">String<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #CE9178\">&quot;Environment&quot;<\/span><span style=\"color: #D4D4D4\">   <\/span><span style=\"color: #6A9955\">&#39; under HKEY_CURRENT_USER<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;summary&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; Sets or updates a system-wide (machine-level) environment variable.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;\/summary&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;category&gt;Methods&lt;\/category&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;param name=&quot;varName&quot;&gt;The name of the environment variable to set.&lt;\/param&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;param name=&quot;value&quot;&gt;The value to assign to the variable.&lt;\/param&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;remarks&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;list type=&quot;bullet&quot;&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39;   &lt;item&gt;&lt;description&gt;Writes to HKEY_LOCAL_MACHINE, under the standard environment key.&lt;\/description&gt;&lt;\/item&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39;   &lt;item&gt;&lt;description&gt;Requires administrative privileges to succeed.&lt;\/description&gt;&lt;\/item&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39;   &lt;item&gt;&lt;description&gt;Broadcasts WM_SETTINGCHANGE to inform the system of the update.&lt;\/description&gt;&lt;\/item&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;\/list&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;\/remarks&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">Public<\/span><span style=\"color: #D4D4D4\"> Shared<\/span><span style=\"color: #569CD6\"> Sub <\/span><span style=\"color: #DCDCAA\">SetMachineEnvVar<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">varName<\/span><span style=\"color: #D4D4D4\"> As <\/span><span style=\"color: #4EC9B0\">String<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #9CDCFE\"> value<\/span><span style=\"color: #D4D4D4\"> As <\/span><span style=\"color: #4EC9B0\">String<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        Using key As <\/span><span style=\"color: #4EC9B0\">RegistryKey<\/span><span style=\"color: #D4D4D4\"> = Registry.LocalMachine.<\/span><span style=\"color: #DCDCAA\">OpenSubKey<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">MachineEnvKeyPath<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #9CDCFE\"> writable<\/span><span style=\"color: #D4D4D4\">:=<\/span><span style=\"color: #569CD6\">True<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">If<\/span><span style=\"color: #D4D4D4\"> key Is<\/span><span style=\"color: #569CD6\"> Nothing<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">Then<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                Throw<\/span><span style=\"color: #569CD6\"> New <\/span><span style=\"color: #DCDCAA\">InvalidOperationException<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;Cannot open the Machine Environment registry key.&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">End If<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #6A9955\">&#39; Write REG_SZ<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            key.<\/span><span style=\"color: #DCDCAA\">SetValue<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">varName<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #9CDCFE\"> value<\/span><span style=\"color: #D4D4D4\">, RegistryValueKind.<\/span><span style=\"color: #DCDCAA\">String<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">End<\/span><span style=\"color: #D4D4D4\"> Using<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">NotifyEnvironmentChanged<\/span><span style=\"color: #D4D4D4\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">End Sub<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;summary&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; Retrieves the value of a system-wide (machine-level) environment variable.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;\/summary&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;category&gt;Methods&lt;\/category&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;param name=&quot;varName&quot;&gt;The name of the environment variable to retrieve.&lt;\/param&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;returns&gt;The value of the environment variable, or &lt;c&gt;Nothing&lt;\/c&gt; if not found.&lt;\/returns&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;remarks&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;list type=&quot;bullet&quot;&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39;   &lt;item&gt;&lt;description&gt;Reads from HKEY_LOCAL_MACHINE under the environment key.&lt;\/description&gt;&lt;\/item&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39;   &lt;item&gt;&lt;description&gt;Returns null if the variable does not exist or the registry key is missing.&lt;\/description&gt;&lt;\/item&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;\/list&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;\/remarks&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">Public<\/span><span style=\"color: #D4D4D4\"> Shared<\/span><span style=\"color: #569CD6\"> Function <\/span><span style=\"color: #DCDCAA\">GetMachineEnvVar<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">varName<\/span><span style=\"color: #D4D4D4\"> As <\/span><span style=\"color: #4EC9B0\">String<\/span><span style=\"color: #D4D4D4\">) As <\/span><span style=\"color: #4EC9B0\">String<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        Using key As <\/span><span style=\"color: #4EC9B0\">RegistryKey<\/span><span style=\"color: #D4D4D4\"> = Registry.LocalMachine.<\/span><span style=\"color: #DCDCAA\">OpenSubKey<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">MachineEnvKeyPath<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #9CDCFE\"> writable<\/span><span style=\"color: #D4D4D4\">:=<\/span><span style=\"color: #569CD6\">False<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">If<\/span><span style=\"color: #D4D4D4\"> key Is<\/span><span style=\"color: #569CD6\"> Nothing<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">Then<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">Return<\/span><span style=\"color: #569CD6\"> Nothing<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #569CD6\">Dim<\/span><span style=\"color: #9CDCFE\"> raw <\/span><span style=\"color: #D4D4D4\">As <\/span><span style=\"color: #4EC9B0\">Object<\/span><span style=\"color: #D4D4D4\"> = key.<\/span><span style=\"color: #DCDCAA\">GetValue<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">varName<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #569CD6\"> Nothing<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">If<\/span><span style=\"color: #D4D4D4\"> raw Is<\/span><span style=\"color: #569CD6\"> Nothing<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">Then<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">Return<\/span><span style=\"color: #569CD6\"> Nothing<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">Return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">Convert<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">ToString<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">raw<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">End<\/span><span style=\"color: #D4D4D4\"> Using<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">End Function<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;summary&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; Sets or updates a per-user environment variable.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;\/summary&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;category&gt;Methods&lt;\/category&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;param name=&quot;varName&quot;&gt;The name of the environment variable to set.&lt;\/param&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;param name=&quot;value&quot;&gt;The value to assign to the variable.&lt;\/param&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;remarks&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;list type=&quot;bullet&quot;&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39;   &lt;item&gt;&lt;description&gt;Writes to HKEY_CURRENT_USER under the Environment key.&lt;\/description&gt;&lt;\/item&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39;   &lt;item&gt;&lt;description&gt;Does not require administrative rights.&lt;\/description&gt;&lt;\/item&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39;   &lt;item&gt;&lt;description&gt;Sends WM_SETTINGCHANGE message to notify the system.&lt;\/description&gt;&lt;\/item&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;\/list&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;\/remarks&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">Public<\/span><span style=\"color: #D4D4D4\"> Shared<\/span><span style=\"color: #569CD6\"> Sub <\/span><span style=\"color: #DCDCAA\">SetUserEnvVar<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">varName<\/span><span style=\"color: #D4D4D4\"> As <\/span><span style=\"color: #4EC9B0\">String<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #9CDCFE\"> value<\/span><span style=\"color: #D4D4D4\"> As <\/span><span style=\"color: #4EC9B0\">String<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        Using key As <\/span><span style=\"color: #4EC9B0\">RegistryKey<\/span><span style=\"color: #D4D4D4\"> = Registry.CurrentUser.<\/span><span style=\"color: #DCDCAA\">OpenSubKey<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">UserEnvKeyPath<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #9CDCFE\"> writable<\/span><span style=\"color: #D4D4D4\">:=<\/span><span style=\"color: #569CD6\">True<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">If<\/span><span style=\"color: #D4D4D4\"> key Is<\/span><span style=\"color: #569CD6\"> Nothing<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">Then<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                Throw<\/span><span style=\"color: #569CD6\"> New <\/span><span style=\"color: #DCDCAA\">InvalidOperationException<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;Cannot open the User Environment registry key.&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">End If<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #6A9955\">&#39; Write REG_SZ<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            key.<\/span><span style=\"color: #DCDCAA\">SetValue<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">varName<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #9CDCFE\"> value<\/span><span style=\"color: #D4D4D4\">, RegistryValueKind.<\/span><span style=\"color: #DCDCAA\">String<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">End<\/span><span style=\"color: #D4D4D4\"> Using<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">NotifyEnvironmentChanged<\/span><span style=\"color: #D4D4D4\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">End Sub<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;summary&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; Retrieves the value of a per-user environment variable.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;\/summary&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;category&gt;Methods&lt;\/category&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;param name=&quot;varName&quot;&gt;The name of the environment variable to retrieve.&lt;\/param&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;returns&gt;The value of the environment variable, or &lt;c&gt;Nothing&lt;\/c&gt; if not found.&lt;\/returns&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;remarks&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;list type=&quot;bullet&quot;&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39;   &lt;item&gt;&lt;description&gt;Reads from HKEY_CURRENT_USER under the Environment key.&lt;\/description&gt;&lt;\/item&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39;   &lt;item&gt;&lt;description&gt;Returns null if the variable does not exist or access is denied.&lt;\/description&gt;&lt;\/item&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;\/list&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">&#39;&#39;&#39; &lt;\/remarks&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">Public<\/span><span style=\"color: #D4D4D4\"> Shared<\/span><span style=\"color: #569CD6\"> Function <\/span><span style=\"color: #DCDCAA\">GetUserEnvVar<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">varName<\/span><span style=\"color: #D4D4D4\"> As <\/span><span style=\"color: #4EC9B0\">String<\/span><span style=\"color: #D4D4D4\">) As <\/span><span style=\"color: #4EC9B0\">String<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        Using key As <\/span><span style=\"color: #4EC9B0\">RegistryKey<\/span><span style=\"color: #D4D4D4\"> = Registry.CurrentUser.<\/span><span style=\"color: #DCDCAA\">OpenSubKey<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">UserEnvKeyPath<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #9CDCFE\"> writable<\/span><span style=\"color: #D4D4D4\">:=<\/span><span style=\"color: #569CD6\">False<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">If<\/span><span style=\"color: #D4D4D4\"> key Is<\/span><span style=\"color: #569CD6\"> Nothing<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">Then<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">Return<\/span><span style=\"color: #569CD6\"> Nothing<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #569CD6\">Dim<\/span><span style=\"color: #9CDCFE\"> raw <\/span><span style=\"color: #D4D4D4\">As <\/span><span style=\"color: #4EC9B0\">Object<\/span><span style=\"color: #D4D4D4\"> = key.<\/span><span style=\"color: #DCDCAA\">GetValue<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">varName<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #569CD6\"> Nothing<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">If<\/span><span style=\"color: #D4D4D4\"> raw Is<\/span><span style=\"color: #569CD6\"> Nothing<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">Then<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">Return<\/span><span style=\"color: #569CD6\"> Nothing<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">Return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">Convert<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">ToString<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">raw<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">End<\/span><span style=\"color: #D4D4D4\"> Using<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">End Function<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">Private<\/span><span style=\"color: #D4D4D4\"> Shared<\/span><span style=\"color: #569CD6\"> Sub <\/span><span style=\"color: #DCDCAA\">NotifyEnvironmentChanged<\/span><span style=\"color: #D4D4D4\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">Dim<\/span><span style=\"color: #9CDCFE\"> result <\/span><span style=\"color: #D4D4D4\">As <\/span><span style=\"color: #4EC9B0\">UIntPtr<\/span><span style=\"color: #D4D4D4\"> = UIntPtr.Zero<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">SendMessageTimeout<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #DCDCAA\">CType<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">HWND_BROADCAST<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #9CDCFE\"> IntPtr<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                           WM_SETTINGCHANGE,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                           UIntPtr.Zero,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                           <\/span><span style=\"color: #CE9178\">&quot;Environment&quot;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                           SMTO_ABORTIFHUNG,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                           <\/span><span style=\"color: #B5CEA8\">5000<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                           <\/span><span style=\"color: #9CDCFE\">result<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">End Sub<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">End Class<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Provides helper methods for reading and writing environment variables at both user and machine scope. Using this static class to read\/write environment variable avoid the issue of settings a variable with the classic Environment.SetEnvironmentVariable, where a variable value is not immediately available after it&#8217;s set.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":943,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-948","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.silverice.it\/IpercubeTechWP1\/wp-json\/wp\/v2\/pages\/948","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silverice.it\/IpercubeTechWP1\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.silverice.it\/IpercubeTechWP1\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.silverice.it\/IpercubeTechWP1\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silverice.it\/IpercubeTechWP1\/wp-json\/wp\/v2\/comments?post=948"}],"version-history":[{"count":4,"href":"https:\/\/www.silverice.it\/IpercubeTechWP1\/wp-json\/wp\/v2\/pages\/948\/revisions"}],"predecessor-version":[{"id":957,"href":"https:\/\/www.silverice.it\/IpercubeTechWP1\/wp-json\/wp\/v2\/pages\/948\/revisions\/957"}],"up":[{"embeddable":true,"href":"https:\/\/www.silverice.it\/IpercubeTechWP1\/wp-json\/wp\/v2\/pages\/943"}],"wp:attachment":[{"href":"https:\/\/www.silverice.it\/IpercubeTechWP1\/wp-json\/wp\/v2\/media?parent=948"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}