当 exe 更改位置时重置应用程序设置

Agr*_*022 2 c# forms config

嗨,我正在使用 Visual Studio 配置文件,但是每次移动 exe 时设置都会更改。

我怎样才能解决这个问题?

应用程序配置文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="GUIChangerUI.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
    <userSettings>
        <GUIChangerUI.Properties.Settings>
            <setting name="StarmadePath" serializeAs="String">
                <value>default</value>
            </setting>
            <setting name="GuiPath" serializeAs="String">
                <value>Not selected yet.</value>
            </setting>
            <setting name="FirstStart" serializeAs="String">
                <value>True</value>
            </setting>
            <setting name="jpeg" serializeAs="String">
                <value>default</value>
            </setting>
            <setting name="debug" serializeAs="String">
                <value>default</value>
            </setting>
            <setting name="Darktheme" serializeAs="String">
                <value>False</value>
            </setting>
            <setting name="Lightheme" serializeAs="String">
                <value>True</value>
            </setting>
            <setting name="starmadeStarter" serializeAs="String">
                <value />
            </setting>
            <setting name="_starmadeStarter" serializeAs="String">
                <value />
            </setting>
            <setting name="OSMTheme" serializeAs="String">
                <value>False</value>
            </setting>
        </GUIChangerUI.Properties.Settings>
    </userSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

ang*_*son 5

包含已保存配置设置的实际配置文件存储在此处:

%APPDATA%\Local\<application name>\<application name>.<eid>_<hash>\<version>
Run Code Online (Sandbox Code Playgroud)

根据这篇 MSDN 文章

<eid>是 URL、StrongName 或 Path,基于可用于散列的证据。
<hash>是从 CurrentDomain 收集的证据的 SHA1 哈希,按以下优先顺序排列:
StrongName
URL
如果这些都不可用,请使用 .exe 路径。

(我的重点)

所以解决方案似乎很简单:

创建一个强名称并签署您的可执行文件。

然后,您每次都会获得相同的唯一哈希值,并且无论何时从新位置启动可执行文件,它都不会更改。

如果您需要帮助签署您的应用程序,请参阅此 MSDN 文章:如何:使用强名称签署程序