Вот проблема: я опубликовал приложение, созданное с помощью Windows Forms с ClickOnce. Поэтому я не могу показать Условия обслуживания перед установкой. Клиент решил показать некоторую страницу Условий обслуживания после установки, и, если пользователь согласился с условиями, нажав кнопку, показать основное приложение. Проблема в том, что после установки приложение показывает 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();
}