簡體   English   中英

如何將“ user.config”文件從源PC移到目標PC並保留其設置?

[英]How to move an 'user.config' file from source PC to target PC preserving its settings?

我有一個第三方應用程序,即“ 刪除空目錄” (又稱為“ RED”) ,可以在此處下載:

http://sourceforge.net/projects/rem-empty-dir/files/?source=navbar

該應用程序的用戶設置遵循標准的.Net設置基礎結構,它將其設置保存在這樣的目錄中:

... \\應用程序數據\\本地\\ RED2 \\ RED2.ex_Url_ilre4odeu2sx2xsqyulyx2jybty45cd5 \\ 2.2.0.0

我的問題是,當我將應用程序文件夾移動到另一台PC時,我將在user.config文件中保持ignore_directories設置不變,這意味着當我將應用程序和設置文件移至另一台PC時,我將保留源PC的用戶設置。目標PC,但是我當然不能只復制存儲user.config文件的文件夾,因為user.config設置將自動存儲在新文件夾中,並且新哈希與源PC完全不同,因此舊目標PC中的user.config文件將被忽略...無法識別。

這是user.config文件的默認內容:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="RED2.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <userSettings>
        <RED2.Properties.Settings>
            <setting name="last_used_directory" serializeAs="String">
                <value>C:\Users\Administrador\AppData\Local\RED2\RED2.ex_Url_ilre4odeu2sx2xsqyulyx2jybty45cd5\</value>
            </setting>
            <setting name="infinite_loop_detection_count" serializeAs="String">
                <value>10</value>
            </setting>
            <setting name="pause_between" serializeAs="String">
                <value>80</value>
            </setting>
            <setting name="max_depth" serializeAs="String">
                <value>-1</value>
            </setting>
            <setting name="ignore_directories" serializeAs="String">
                <value>System Volume Information
RECYCLER
Papierkorb
Recycled
NtUninstall
$RECYCLE.BIN
GAC_MSIL</value>
            </setting>
        </RED2.Properties.Settings>
    </userSettings>
</configuration>

這是我將堅持/便攜式的內容:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="RED2.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <userSettings>
        <RED2.Properties.Settings>
            <setting name="last_used_directory" serializeAs="String">
                <value>C:\</value>
            </setting>
            <setting name="infinite_loop_detection_count" serializeAs="String">
                <value>10</value>
            </setting>
            <setting name="ignore_0kb_files" serializeAs="String">
                <value>False</value>
            </setting>
            <setting name="pause_between" serializeAs="String">
                <value>80</value>
            </setting>
            <setting name="max_depth" serializeAs="String">
                <value>-1</value>
            </setting>
            <setting name="keep_system_folders" serializeAs="String">
                <value>False</value>
            </setting>
            <setting name="ignore_directories" serializeAs="String">
                <value>$RECYCLE.BIN
C:\Program Files\WindowsApps\Microsoft.WinJS.2.0_1.0.9600.16384_neutral__8wekyb3d8bbwe\microsoft.system.package.metadata
C:\ProgramData\Microsoft\Crypto
C:\ProgramData\Microsoft\Device Stage
C:\ProgramData\Microsoft\DRM
C:\ProgramData\Microsoft\IdentityCRL
C:\ProgramData\Microsoft\RAC\Temp
C:\ProgramData\Microsoft\Windows\DRM
C:\ProgramData\Microsoft\Windows\Sqm
C:\ProgramData\Microsoft\Windows\Start Menu
C:\Users\Administrador\AppData\Local\Microsoft\CLR_v2.0
C:\Users\Administrador\AppData\Local\Microsoft\Feeds Cache
C:\Users\Administrador\AppData\Local\Microsoft\Windows\AppCache
C:\Users\Administrador\AppData\Local\Microsoft\Windows\Application Shortcuts
C:\Users\Administrador\AppData\Local\Microsoft\Windows\Burn
C:\Users\Administrador\AppData\Local\Microsoft\Windows\Explorer\ThumbCacheToDelete
C:\Users\Administrador\AppData\Local\Microsoft\Windows\INetCache\IE
C:\Users\Administrador\AppData\Local\Microsoft\Windows\Notifications
C:\Users\Administrador\AppData\Roaming\Microsoft\Crypto
C:\Users\Administrador\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch
C:\Users\Administrador\AppData\Roaming\Microsoft\SystemCertificates
C:\Users\Administrador\AppData\Roaming\Microsoft\Windows\AccountPictures
C:\Users\Administrador\AppData\Roaming\Microsoft\Windows\Network Shortcuts
C:\Users\Administrador\AppData\Roaming\Microsoft\Windows\Printer Shortcuts
C:\Users\Administrador\AppData\Roaming\Microsoft\Windows\Recent
C:\Users\Administrador\AppData\Roaming\Microsoft\Windows\Start Menu
C:\Users\Default\AppData\Local\Microsoft\Windows
C:\Users\Default\AppData\Roaming\Microsoft\Windows
C:\Users\Public
C:\Windows\assembly
C:\Windows\Downloaded Program Files
C:\Windows\Help
C:\Windows\ImmersiveControlPanel
C:\Windows\Installer
C:\Windows\Logs
C:\Windows\Microsoft.NET\assembly
C:\Windows\Offline Web Pages
C:\Windows\Resources\Themes\aero
C:\Windows\ServiceProfiles
C:\Windows\servicing
C:\Windows\System32\catroot
C:\Windows\System32\config\systemprofile\AppData\Local\Microsoft\CLR_v4.0
C:\Windows\System32\config\systemprofile\AppData\Local\Microsoft\Windows
C:\Windows\System32\config\systemprofile\AppData\Roaming\Microsoft\SystemCertificates
C:\Windows\System32\DriverStore\Temp
C:\Windows\System32\LogFiles
C:\Windows\System32\Microsoft\Crypto
C:\Windows\System32\ProximityToast
C:\Windows\System32\RasToast
C:\Windows\SysWOW64\config\systemprofile\AppData\Local\Microsoft\CLR_v4.0_32
C:\Windows\SysWOW64\config\systemprofile\AppData\LocalLow\Microsoft
C:\Windows\SysWOW64\DriverStore\FileRepository
C:\Windows\SysWOW64\ProximityToast
C:\Windows\SysWOW64\RasToast
C:\Windows\Temp
C:\Windows\WinSxS\Backup
C:\Windows\WinSxS\InstallTemp
C:\Windows\WinSxS\Temp
System Volume Information</value>
            </setting>
            <setting name="delete_stats" serializeAs="String">
                <value>3496</value>
            </setting>
        </RED2.Properties.Settings>
    </userSettings>
</configuration>

我的問題是,我可以覆蓋設置文件的屬性或其他變通方法,這可以使user.config文件真正具有可移植性,從而避免了目錄哈希的問題?

好吧,我很確定這可能是因為我過去是使用另一個.Net應用程序的另一個user.config文件來完成的,我記不清我到底做了什么,因為這是很多試驗和錯誤,但是我認為我要做的是在應用程序文件夾的同一目錄中創建一個新的app.config文件,然后將存儲在AppData目錄中的user.config的全部內容復制到該應用程序的工作目錄中的新app.config文件中,然后在我希望當應用程序第一次在AppData目錄中創建user.config時運行app.config文件中的屬性以保留自定義默認值,但是這次對於該應用程序RED2.exe無效

我嘗試了一些基本的想法,例如在存儲RED2.exe的同一文件夾中添加user.config ,然后在文件中添加我喜歡的配置,我也做了同樣的事情,創建了app.config ,一切正常,但是也許我在操作過程中做錯了什么。

如果您可以訪問代碼,則對您來說會更容易。 RED2代碼可以在Github 這里 您可以下載並進行一些調整以適合您的目的。

這不是僅鏈接的答案。 作為特定問題的解決方案,在這種情況下,訪問代碼是最好的解決方案。 我只是在共享一個公共代碼庫的鏈接,以供大家了解。

我通過在https://github.com/hxseven/Remove-Empty-Directories下載源代碼並構建默認的ExeName.exe.config來解決它,然后在其userSettings部分中可以修改設置以保留默認的自定義配置將應用程序目錄復制到另一台PC時,只需包含包含每個用戶設置的ExeName.exe.config ,這非常容易。

做到這一點的訣竅在於。

保存每個用戶的設置時,它似乎與Local AppData文件夾中生成的user.config文件沒有什么不同,所以我想,一種更簡單的方法是在UI下執行所需的修改以生成文件在AppData文件夾中,然后將生成的user.config文件重命名為RED2.exe.config並將其存儲在應用程序的工作目錄中,然后將其復制到另一台PC。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM