mysettingsを保存するための変更パス - VB.NET 2008
-
27-09-2019 - |
質問
私は、ユーザーの設定を保存しmysettingsを使用しています。
この設定ファイルは、このパスに保存されます:
C:\ Documentsと 設定\ \ [ローカル 設定]アプリケーション データ\\ のの\
このパスを変更することは可能ですか?例えば、私の場合、私が「はProgramData」フォルダ(ビスタ&W7)でアプリのデータを保存し、私は同じフォルダに、この設定ファイル保存したいと思います。可能でしょうか?
事前に感謝します。
解決
私の経験から、
、あなたは勝つXPからVistaまたはW7に設定を転送しますと言った場合、フォルダのパスを修正することはできません。
しかし、一台のPCに、あなたは、SNツールを使用して、.exeファイルに署名することにより、applicationDataに\のApplicationName \ anUgLycOde \にフォルダのパスを修正することができます。 (ugluコードを使用すると、再構築や記号は、これを防ぐことができますたびに変更します)。
あなたは、クロスのWin版を作ることだと思う場合は、しかし、私はあなたが私の設定を使用するのではなく、XMLシリアル化を使用しないようお勧めします。 Xmlシリアライズしデシリアライズを使用して設定、読み込みと保存、それを定義するクラスを作成します。あなたはマイドキュメントまたは* .exeのと同じフォルダに置くことができます。
ここではサンプルがあります:
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
単にそれを使用するには
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
所属していません StackOverflow