如何使用VB.Net从一个应用程序更改另一个应用程序的UserSettings值?

如何使用VB.Net从一个应用程序更改另一个应用程序的UserSettings值?,vb.net,Vb.net,是否可以通过编程方式从另一个应用程序更改一个目标应用程序的My.Settings.SomeString值 范例 我要更改的值: 是的,这是可能的 My.Settings配置存储在位于以下位置的文件中: C:\Users\[您的\u用户名]\AppData\Local\[应用程序发布者]\[应用程序名称]\[应用程序版本]\user.config 我确信您可以通过编程方式将目标应用程序的user.config文件的XML加载到您的应用程序中,调整它,然后保存它 打开目标应用程序时,user.con

是否可以通过编程方式从另一个应用程序更改一个目标应用程序的
My.Settings.SomeString

范例

我要更改的值: 是的,这是可能的

My.Settings配置存储在位于以下位置的文件中:

C:\Users\[您的\u用户名]\AppData\Local\[应用程序发布者]\[应用程序名称]\[应用程序版本]\user.config

我确信您可以通过编程方式将目标应用程序的user.config文件的XML加载到您的应用程序中,调整它,然后保存它

打开目标应用程序时,user.config文件将像普通文件一样加载,您对XML所做的任何更改都将反映出来

是的,这是可能的

My.Settings配置存储在位于以下位置的文件中:

C:\Users\[您的\u用户名]\AppData\Local\[应用程序发布者]\[应用程序名称]\[应用程序版本]\user.config

我确信您可以通过编程方式将目标应用程序的user.config文件的XML加载到您的应用程序中,调整它,然后保存它


打开目标应用程序时,user.config文件将像普通文件一样加载,您对XML所做的任何更改都将反映出来

设置以xml格式保存。默认情况下,文件名为Settings.Settings,位于
项目目录\My Project

在您的示例+另一个设置中,文件可能如下所示


这是一根绳子
这是另一根绳子
如果您有VS 2012或更新版本,则可以。我这样做了,下面是生成的类。(如果您至少没有VS 2012,您仍然可以使用Microsoft的)


这些设置保存在xml中。默认情况下,文件名为Settings.Settings,位于
项目目录\My Project

在您的示例+另一个设置中,文件可能如下所示


这是一根绳子
这是另一根绳子
如果您有VS 2012或更新版本,则可以。我这样做了,下面是生成的类。(如果您至少没有VS 2012,您仍然可以使用Microsoft的)


应用程序设置的设计使应用程序只能加载其设置,因此您无法通过
My.settings
执行此操作。对于共享的、套件类型的配置,部署方法(XCopy vs OneClick)也会使问题变得复杂。您可以自己保存数据,以便其他应用程序(不仅仅是您的应用程序)可以访问数据。您能说得更清楚一点吗。。。只是了解了你所说的话的一小部分…:(#MyBad,请添加这个简单的答案和您的解释…(是的,如果可能&否,如果不)可以这样做:应用程序设置的设计使应用程序只能加载其设置,因此您无法通过
My.settings
来完成。部署方法(XCopy与OneClick)也会使它变得复杂对于共享的、套件类型的配置,您可以自己保存数据,以便其他应用程序(不仅仅是您的应用程序)可以访问它们。您是否可以说得更清楚一点…只是了解您所说的几部分…:(#MyBad,请添加此简单答案和您的解释…(是,如果可能&否,如果不)可以按照以下思路:
<System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=True, [Namespace]:="http://schemas.microsoft.com/VisualStudio/2004/01/settings"), _
 System.Xml.Serialization.XmlRootAttribute([Namespace]:="http://schemas.microsoft.com/VisualStudio/2004/01/settings", IsNullable:=False)> _
Partial Public Class SettingsFile

    Private profilesField As Object
    Private settingsField() As SettingsFileSetting
    Private currentProfileField As String
    Private generatedClassNamespaceField As String
    Private generatedClassNameField As String
    Private useMySettingsClassNameField As Boolean

    Public Property Profiles() As Object
        Get
            Return Me.profilesField
        End Get
        Set(value As Object)
            Me.profilesField = value
        End Set
    End Property

    <System.Xml.Serialization.XmlArrayItemAttribute("Setting", IsNullable:=False)> _
    Public Property Settings() As SettingsFileSetting()
        Get
            Return Me.settingsField
        End Get
        Set(value As SettingsFileSetting())
            Me.settingsField = value
        End Set
    End Property

    <System.Xml.Serialization.XmlAttributeAttribute()> _
    Public Property CurrentProfile() As String
        Get
            Return Me.currentProfileField
        End Get
        Set(value As String)
            Me.currentProfileField = value
        End Set
    End Property

    <System.Xml.Serialization.XmlAttributeAttribute()> _
    Public Property GeneratedClassNamespace() As String
        Get
            Return Me.generatedClassNamespaceField
        End Get
        Set(value As String)
            Me.generatedClassNamespaceField = value
        End Set
    End Property

    <System.Xml.Serialization.XmlAttributeAttribute()> _
    Public Property GeneratedClassName() As String
        Get
            Return Me.generatedClassNameField
        End Get
        Set(value As String)
            Me.generatedClassNameField = value
        End Set
    End Property

    <System.Xml.Serialization.XmlAttributeAttribute()> _
    Public Property UseMySettingsClassName() As Boolean
        Get
            Return Me.useMySettingsClassNameField
        End Get
        Set(value As Boolean)
            Me.useMySettingsClassNameField = value
        End Set
    End Property
End Class

<System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=True, [Namespace]:="http://schemas.microsoft.com/VisualStudio/2004/01/settings")> _
Partial Public Class SettingsFileSetting

    Private valueField As SettingsFileSettingValue
    Private nameField As String
    Private typeField As String
    Private scopeField As String

    Public Property Value() As SettingsFileSettingValue
        Get
            Return Me.valueField
        End Get
        Set(value As SettingsFileSettingValue)
            Me.valueField = value
        End Set
    End Property

    <System.Xml.Serialization.XmlAttributeAttribute()> _
    Public Property Name() As String
        Get
            Return Me.nameField
        End Get
        Set(value As String)
            Me.nameField = value
        End Set
    End Property

    <System.Xml.Serialization.XmlAttributeAttribute()> _
    Public Property Type() As String
        Get
            Return Me.typeField
        End Get
        Set(value As String)
            Me.typeField = value
        End Set
    End Property

    <System.Xml.Serialization.XmlAttributeAttribute()> _
    Public Property Scope() As String
        Get
            Return Me.scopeField
        End Get
        Set(value As String)
            Me.scopeField = value
        End Set
    End Property
End Class

<System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=True, [Namespace]:="http://schemas.microsoft.com/VisualStudio/2004/01/settings")> _
Partial Public Class SettingsFileSettingValue

    Private profileField As String
    Private valueField As String

    <System.Xml.Serialization.XmlAttributeAttribute()> _
    Public Property Profile() As String
        Get
            Return Me.profileField
        End Get
        Set(value As String)
            Me.profileField = value
        End Set
    End Property

    <System.Xml.Serialization.XmlTextAttribute()> _
    Public Property Value() As String
        Get
            Return Me.valueField
        End Get
        Set(value As String)
            Me.valueField = value
        End Set
    End Property
End Class
' define the path to the settings file
Dim settingsPath = "C:\Users\username\AppData\Local\Temporary Projects\ConsoleApplication1\My Project\Settings.settings"
Dim serializer As New XmlSerializer(GetType(SettingsFile))

Sub Main()
    Dim settingsObject As SettingsFile
    ' open the settings file for reading
    Using sr As New StreamReader(settingsPath) ' deserialize the xml file to the settings object
        settingsObject = CType(serializer.Deserialize(sr), SettingsFile)
    End Using
    Console.WriteLine("Available settings:") ' display the available settings
    Console.WriteLine(
        String.Join(Environment.NewLine, settingsObject.Settings.Select(
                    Function(s) String.Format("{0}: '{1}'", s.Name, s.Value.Value))))
    Console.WriteLine("Enter a setting name to be modified...")
    Dim settingNameToBeModified = Console.ReadLine()
    Dim settingToBeModified =
        settingsObject.Settings.
        Where(Function(s) s.Name.ToUpper() = settingNameToBeModified.ToUpper()).Single()
    Console.WriteLine(
        "Enter a new value for {0} (old value: '{1}')",
        settingToBeModified.Name, settingToBeModified.Value.Value)
    Dim newValue = Console.ReadLine()
    If EditSetting(settingToBeModified, newValue) Then
        Console.WriteLine("Saved new setting!")
    Else
        Console.WriteLine("Couldn't find setting '{0}'", settingNameToBeModified)
    End If
    Console.WriteLine("Press enter to exit")
    Console.ReadLine()
End Sub

Public Function EditSetting(settingObject As SettingsFileSetting, newValue As String)
    Try
        Console.WriteLine(
            "Enter a new value for {0} (old value: '{1}')",
            settingObject.Name, settingObject.Value.Value)
        settingObject.Value.Value = newValue
        Using sr As New StreamWriter(settingsPath) ' open the settings file again, for writing
            serializer.Serialize(sr, settingObject) ' serialize the settings object to the xml file
        End Using
        Console.WriteLine("Saved new setting!")
    Catch
        Return False
    End Try
End Function