1

我有一个第 3 方应用程序,Remove Empty Directories aka RED,可以在这里下载:

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

应用程序的用户设置遵循标准的 .Net 设置基础结构,它将其设置保存在如下目录中:

...\AppData\Local\RED2\RED2.ex_Url_ilre4odeu2sx2xsqyulyx2jybty45cd5\2.2.0.0

我的问题是,当我将应用程序文件夹移动到另一台 PC 时,我将ignore_directoriesuser.config文件中保持设置,我的意思是当我将应用程序和设置文件移动到时,我将保留源 PC 的用户设置目标PC,但当然我不能只复制存储user.config文件的文件夹,因为user.config设置将自动存储在一个新文件夹中,新文件夹的新哈希与源PC完全不同,所以老用户目标 PC 中的.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文件中,然后在我希望app.config文件中的属性在应用程序在AppData中创建user.config时保留自定义默认值第一次运行目录,但这次该技术不适用于此应用程序RED2.exe

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

4

2 回答 2

1

如果您可以访问代码,这对您来说会更容易。RED2 代码可在 Github 上找到。您可以下载并稍微调整一下以适合您的目的。

这不是仅链接的答案。作为特定问题的解决方案,访问代码是这种情况下的最佳解决方案。我只是分享一个指向公开可用代码库的链接,供大家了解。

于 2015-09-22T08:02:17.453 回答
0

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

于 2015-09-21T17:49:17.267 回答