如何将 '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 设置基础结构,它将其设置保存在如下目录中:

...\AppData\Local\RED2\RED2.ex_Url_ilre4odeu2sx2xsqyulyx2jybty45cd5.2.0.0

我的问题是,当我将应用程序文件夹移动到另一台 PC 时,我会使 ignore_directories 设置在 user.config 文件中持久化,我的意思是当我将应用程序和设置文件移动到目标 PC 时,我将保留源 PC 的用户设置,但当然我不能只复制存储 user.config 文件,因为 user.config 设置将自动存储在新文件夹中,新文件夹的新哈希值与源 PC 完全不同,所以旧的 user.config 目标 PC 中的文件将被忽略...无法识别。

这是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>

这是我要制作的内容perssistent/portable:

<?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 文件在应用程序的工作目录中,然后根据我的需要编辑 app.config 文件中的属性,以便在应用程序创建 时保留自定义默认值]user.config 第一次在 AppData 目录中 运行,但是这次该技术对这个应用程序不起作用 RED2.exe.

我尝试了一些基本的想法,比如在 RED2.exe 所在的同一文件夹中添加 user.config存储然后在文件中添加我喜欢的配置,我也做了同样的事情创建了一个app.config,一切正常,但也许我在过程中做错了。

我通过在 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。

如果您可以访问代码,对您来说会更容易。 RED2 代码在 Github here 可用。您可以下载并根据您的目的稍微调整一下。

This is not a link-only answer. As a solution to a specific problem, access to the code is the best solution in this case. I am just sharing a link to the publically available codebase for everyone to know.