问题在于:我发布了一个使用ClickOnce的Windows窗体制作的应用程序。因此,我无法在安装前显示服务条款。客户决定在安装后显示一些服务条款页面,如果用户通过按下按钮同意条款,则显示主应用程序。问题是,安装后应用程序显示ToS,用户接受,并在第一次重启后,再次向用户显示ToS!如果他接受,下次用户打开应用程序(重启后或应用程序关闭并再次打开后)将不再出现此问题,即如果用户同意ToS主应用程序将显示,问ToS。
在设置中定义tos的代码:
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool tos {
get {
return ((bool)(this["tos"]));
}
set {
this["tos"] = value;
}
}
应用启动时检查ToS的代码:
bool tosB = Properties.Settings.Default.tos;
if (!tosB)
{
this.tab_control.SelectTab(this.TOS_PAGE);
this.richTextBox1.Rtf =
global::MyAppName.Properties.Resources.terms_and_conditions;
}
else
{
check_connectivity();
}
当用户使用我同意按钮时运行的代码:
private void button2_Click(object sender, EventArgs e)
{
Properties.Settings.Default.tos = true;
Properties.Settings.Default.Save();
Microsoft.Win32.RegistryKey key =
Microsoft.Win32.Registry.CurrentUser.OpenSubKey(
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
key.SetValue("My App Name", Application.ExecutablePath.ToString());
check_connectivity();
}