Почему настройки не сохраняются, когда я пытаюсь сделать это с помощью кода? - PullRequest
0 голосов
/ 19 апреля 2019

Итак, я написал этот быстрый пример, чтобы проверить, каково это сохранение данных в настройках приложения, но кажется, что существуют некоторые проблемы с сохранением реальных данных, потому что когда я отлаживаю их и запускаю на своем ПК, они сохраняют данные и он действует как следует, но если я отправляю EXE своему другу после того, как уже выполнил его (то есть, в нем уже должна быть строка, сохраненная в настройках), он действует так, как будто там ничего нет, и сразу переходит к Lock

Почему он так себя ведет? Нужно ли мне отправить с ним какой-нибудь конфигурационный файл?

        if (HWID.HasKey())
        {
            if (HWID.CompareKey())
            {
                InitializeComponent();
                return;
            }
            MessageBox.Show("Sorry, you're not authorized to use this app.");
            Close();
            return;
        }

        MessageBox.Show("Software has been registered.");
        HWID.Lock();

И HWID класс

class HWID
{

    public static bool HasKey()
    {

        if (!String.IsNullOrEmpty(Settings.Default.ID))
        {
            return true;
        }

        return false;
    }

    public static void Lock()
    {

        if (String.IsNullOrEmpty(Settings.Default.ID))
        {
            ManagementClass managClass = new ManagementClass("win32_processor");
            ManagementObjectCollection managCollec = managClass.GetInstances();

            foreach (ManagementObject managObj in managCollec)
            {
                var cpuInfo = managObj.Properties["processorID"].Value.ToString();
                Settings.Default.ID = cpuInfo;
                Settings.Default.Save();
                Settings.Default.Reload();
                break;
            }
        }
    }


    public static bool CompareKey()
    {
        var managClass = new ManagementClass("win32_processor");
        var managCollec = managClass.GetInstances();

        foreach (var managObj in managCollec)
        {
            var cpuInfo = managObj.Properties["processorID"].Value.ToString();
            if (cpuInfo == Settings.Default.ID)
            {
                return true;
            }
        }
        return false;
    }
}
...