C# ClickOnce应用程序在自动启动Windows时不记得设置

C# ClickOnce应用程序在自动启动Windows时不记得设置,c#,clickonce,settings,C#,Clickonce,Settings,我有一个使用ClickOnce部署的应用程序,并且可以选择使用Windows自动启动。但是,当我重新启动Windows时,我的应用程序成功启动,但无法找到设置(我只是使用内置的设置功能)。但是,如果我关闭自动启动的应用程序并用桌面上的图标重新启动它,它就能找到它的设置 要使用Windows自动启动,我使用以下代码: Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE

我有一个使用ClickOnce部署的应用程序,并且可以选择使用Windows自动启动。但是,当我重新启动Windows时,我的应用程序成功启动,但无法找到设置(我只是使用内置的设置功能)。但是,如果我关闭自动启动的应用程序并用桌面上的图标重新启动它,它就能找到它的设置

要使用Windows自动启动,我使用以下代码:

Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
if (runOnStartup == true) 
    key.SetValue("AppName", Application.ExecutablePath.ToString());
else 
    key.DeleteValue("AppName");
我注意到桌面快捷方式不是直接指向exe,而是指向url,如:

http://pathToApp.application#AppName.application,区域性=中性,PublicKeyToken=c8c0a22ba65cb9f4,处理器架构=x86


我如何才能让我的自动启动应用程序以与快捷方式相同的方式工作?

您无法控制ClickOnce应用程序的安装位置,它将在升级时随时移动,因此我不会在app.config文件中存储可更改的设置。相反,我将自己的设置文件(通常使用简单的xml序列化对象)创建到一个“已知”文件夹中,例如Environment.SpecialFolder.CommonApplicationData或Environment.SpecialFolder.LocalApplicationData

我还应该提到我使用“脱机”安装模式进行部署。如果使用“仅联机”模式,您可能会被限制在可以向其写入内容的位置。