Ändern Pfad zu speichern mysettings - VB.NET 2008
-
27-09-2019 - |
Frage
Ich verwende mysettings Benutzereinstellungen zu speichern.
Diese Konfigurationsdatei wird in diesem Pfad gespeichert:
c: \ Dokumente und Einstellungen \ \ [Local Einstellungen] Anwendung Daten \\ \
ist möglich, diesen Pfad zu ändern? Zum Beispiel in meinem Fall habe ich speichern App-Daten in „Programdata“ -Ordner (Vista & W7) und ich würde im selben Ordner speichern Sie diese Konfigurationsdatei mögen. Möglich ist?
Vielen Dank im Voraus
Lösung
Aus meiner Erfahrung, wenn Sie sagen, dass Sie die Einstellung von Windows XP auf Vista oder W7 übertragen, ist es nicht möglich, den Ordnerpfad zu beheben.
Jedoch in einem PC können Sie Fix den Ordnerpfad auf Anwendungsdaten \ Application \ anUgLycOde \ durch Zeichen Ihre .exe von sn-Tools. (Der UGlu Code würde jedes Mal ändern Sie wieder aufzubauen und Zeichen werden verhindern).
Aber wenn Sie eine Quer Win Version zu denken, ich schlage vor, Sie nicht Meine Einstellungen zu verwenden, sondern zu verwenden XML-Serialisierung. Erstellen Sie eine Klasse, um die Einstellung, Laden und Speichern sie zu definieren, indem Xml Serialize und Deserialize verwenden. Sie können mit * .exe in Eigene Dateien oder gleichen Ordner.
Hier ist die Probe:
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
Um es zu verwenden, einfach als:
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