雨浅听风吟 2019-07-03 15:41 采纳率: 0%
浏览 313

使用vb.net修改系统变量,还要在系统变量界面按确定才能生效

有如下ui和代码,每次运行程序后还需要去系统变量设置的地方按下确定才能生效

图片说明

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim variable_name As String = "UGII_LANG"
        Dim variable_value As String = "simpl_chinese"
        My.Computer.Registry.SetValue("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment", variable_name, variable_value)
        'My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Environment", variable_name, variable_value)
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim variable_name As String = "UGII_LANG"
        Dim variable_value As String = "english"
        My.Computer.Registry.SetValue("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment", variable_name, variable_value)
    End Sub
End Class
  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-10 17:45
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    要将这些值添加到系统变量中,请确保您已经正确安装了VB.NET的Registry类库。如果还没有安装,可以通过以下步骤进行安装:

    1. 打开命令提示符(CMD)。
    2. 输入dotnet add package Microsoft.VisualBasic.dll并回车。

    然后,在您的代码中,您可以直接访问System.Environment来获取当前用户环境变量,并通过GetValue()方法来获取或设置特定的环境变量。

    Public Class Form1
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim variable_name As String = "UGII_LANG"
            Dim variable_value As String = "simpl_chinese"
            Set EnvVar = Registry.GetValue("HKEY_CURRENT_USER\Environment", variable_name, "")
            If EnvVar Is Nothing Then
                EnvVar = New RegistryValue
                EnvVar.Name = variable_name
                EnvVar.ValueType = RegistryValueType.String
                EnvVar.DefaultValue = variable_value
                EnvVar.Save()
            Else
                EnvVar.Value = variable_value
                EnvVar.Save()
            End If
        End Sub
    
        Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            Dim variable_name As String = "UGII_LANG"
            Dim variable_value As String = "english"
            Set EnvVar = Registry.GetValue("HKEY_CURRENT_USER\Environment", variable_name, "")
            If EnvVar Is Nothing Then
                EnvVar = New RegistryValue
                EnvVar.Name = variable_name
                EnvVar.ValueType = RegistryValueType.String
                EnvVar.DefaultValue = variable_value
                EnvVar.Save()
            Else
                EnvVar.Value = variable_value
                EnvVar.Save()
            End If
        End Sub
    
        Public Class RegistryValue
            Private _Name As String
            Private _ValueType As RegistryValueType
            Private _DefaultValue As String
            Private _Value As String
            Private _Save As Boolean
    
            Public Property Name() As String
                Return _Name
            End Property
    
            Public Property ValueType() As RegistryValueType
                Return _ValueType
            End Property
    
            Public Property DefaultValue() As String
                Return _DefaultValue
            End Property
    
            Public Property Value() As String
                Return _Value
            End Property
    
            Public Property Save() As Boolean
                Return _Save
            End Property
    
            Public Property EnvironmentKey As String
                Get
                    Return "HKEY_CURRENT_USER\Environment"
                End Get
                Set(value As String)
                    Me._EnvironmentKey = value
                End Set
            End Property
    
            Public Property RegistryKey As String
                Get
                    Return "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall\{00020400-0000-0000-C000-000000000046}\InstallLocation"
                End Get
                Set(value As String)
                    Me._RegistryKey = value
                End Set
            End Property
    
            Public Sub Load()
                Dim reg As RegistryObject
                Dim key As String
                Dim val As String
    
                key = EnvironmentKey
                reg = RegistryObject.Create(key)
                val = reg.GetValue(KeyName)
    
                _Name = reg.Name
                _ValueType = reg.ValueType
                _DefaultValue = val
                _Value = val
                _Save = True
            End Sub
    
            Public Sub Save()
                Dim reg As RegistryObject
                Dim key As String
                Dim val As String
    
                key = EnvironmentKey
                reg = RegistryObject.Create(key)
                reg.SetValue(KeyName, Value)
            End Sub
        End Class
    End Class
    

    在这个示例中,我们创建了一个RegistryValue类来存储每个环境变量的信息。当您单击按钮时,它会调用Load()方法来读取当前用户的环境变量,然后将新值保存到环境中。这样,即使您不关闭应用程序,每次重新启动计算机时,环境变量也会被更新。

    请注意,这只是一个基本示例,实际应用可能需要处理更复杂的环境变量管理逻辑。

    评论

报告相同问题?