Change path to save mysettings - VB.NET 2008

I use mysettings to save user settings.

This configuration file is saved in this path:

c: \ Documents and Settings \\ [Local Settings] Application Data \\\

Is it possible to change this path? For example, in my case, I save the application data in the "ProgramData" folder (Vista and W7), and I would like to save this configuration file in the same folder. Maybe?

Thanks in advance

+4
source share
1 answer

From my experience. If you say that you will transfer the configuration from Win XP to Vista or W7, it is not possible to fix the folder path.

However, on one PC, you can fix the path to the ApplicationData \ ApplicationName \ anUgLycOde \ folder by signing your .exe using sn-tools. (the uglu code will change every time you rebuild it, and the signature will prevent this).

But if you decide to make a cross version of Win, I suggest you not use My settings, but use Xml serialization. Create a class to define your parameter, Load and save it using Xml Serialize and Deserialize. You can put * .exe in My document or the same folder.

Here is an example:

Imports System.Xml.Serialization <XmlRoot("FTPSender")> _ Public Class FTPSenderConfig ' default file path relative to the current .exe file path. Const fDefaultCFGFile As String = "FTPSender.cfg" Public Shared ReadOnly Property DefaultFilePath() As String Get Return IO.Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) & "\" & fDefaultCFGFile End Get End Property Public Shared Function Load(Optional ByVal FilePath As String = Nothing) As FTPSenderConfig If FilePath Is Nothing Then FilePath = DefaultFilePath() If Not IO.File.Exists(FilePath) Then Return New FTPSenderConfig() ' load default settings Using sr As New IO.StreamReader(FilePath) Try Dim x As New XmlSerializer(GetType(FTPSenderConfig)) Load = CType(x.Deserialize(sr), FTPSenderConfig) 'MyLog.WriteLog("FTPSender settings loaded.") Finally If sr IsNot Nothing Then sr.Close() sr.Dispose() End If End Try End Using End Function Public Shared Sub Save(ByVal FTPSenderConfig As FTPSenderConfig, Optional ByVal FilePath As String = Nothing) If FilePath Is Nothing Then FilePath = DefaultFilePath() If FTPSenderConfig Is Nothing Then Return Using sw As New IO.StreamWriter(FilePath) Try Dim x As New XmlSerializer(FTPSenderConfig.GetType()) x.Serialize(sw, FTPSenderConfig) 'MyLog.WriteLog("FTPSender settings saved.") Finally If sw IsNot Nothing Then sw.Close() sw.Dispose() End If End Try End Using End Sub Dim fHost As String = "127.0.0.1" <XmlElement("Host")> _ Public Property Host() As String Get Return fHost End Get Set(ByVal value As String) fHost = value End Set End Property Dim fUser As String = "guess" <XmlElement("User")> _ Public Property User() As String Get Return fUser End Get Set(ByVal value As String) fUser = value End Set End Property Dim fPassEncrypted As String = EncDec.Encrypt("guess") <XmlElement("PassEncrypted")> _ Public Property PassEncrypted() As String Get Return fPassEncrypted End Get Set(ByVal value As String) fPassEncrypted = value End Set End Property <XmlIgnore()> _ Public Property Pass() As String Get Return EncDec.Decrypt(fPassEncrypted) End Get Set(ByVal value As String) fPassEncrypted = EncDec.Encrypt(value) End Set End Property Dim fTransferMode As String = MyFTPClient.TransferModeEnum.Passive.ToString() <XmlElement("TransferMode")> _ Public Property TransferMode() As MyFTPClient.TransferModeEnum Get Return [Enum].Parse(GetType(MyFTPClient.TransferModeEnum), fTransferMode) End Get Set(ByVal value As MyFTPClient.TransferModeEnum) fTransferMode = value.ToString() End Set End Property End Class 

To use it just like:

 Dim cfg As FTPSenderConfig cfg = FTPSenderConfig.Load() ' In Form_Load Dim h as String = cfg.Host cfg.Host = h FTPSenderConfig.Save(cfg) ' In Form_FormClosed 
0
source

Source: https://habr.com/ru/post/1307014/


All Articles