如何使用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