App.Config МОЖЕТ быть изменен ... однако он существует в месте, похожем на HKEY___LOCAL_MACHINE, т. Е. Обычный пользователь имеет доступ только для чтения.
Таким образом, вам нужно будет изменить его как администратора - лучшее время будет во время установки, когда вы (как предполагается) выполняете установку с расширенными разрешениями.
Итак, создайте класс Installer, используйте Custom Action в проекте установки, чтобы передать выбор пользователя (например, "/ svr = [SERVER] / db = [DB] / uilevel = [UILEVEL]") и, в Событие AfterInstall, измените файл App.Config, используя что-то вроде:
Public Shared Property AppConfigSetting(ByVal SettingName As String) As Object
Get
Return My.Settings.PropertyValues(SettingName)
End Get
Set(ByVal value As Object)
Dim AppConfigFilename As String = String.Concat(System.Reflection.Assembly.GetExecutingAssembly.Location, ".config")
If (My.Computer.FileSystem.FileExists(AppConfigFilename)) Then
Dim AppSettingXPath As String = String.Concat("/configuration/applicationSettings/", My.Application.Info.AssemblyName, ".My.MySettings/setting[@name='", SettingName, "']/value")
Dim AppConfigXML As New System.Xml.XmlDataDocument
With AppConfigXML
.Load(AppConfigFilename)
Dim DataNode As System.Xml.XmlNode = .SelectSingleNode(AppSettingXPath)
If (DataNode Is Nothing) Then
Throw New Xml.XmlException(String.Format("Application setting not found ({0})!", AppSettingXPath))
Else
DataNode.InnerText = value.ToString
End If
.Save(AppConfigFilename)
End With
Else
Throw New IO.FileNotFoundException("App.Config file not found!", AppConfigFilename)
End If
End Set
End Property