C# HWID Проверка, работает, но не передается в строку

Окей, мой код для проверки HWID работает нормально, но когда приходит часть для передачи HWID в строку, он не работает, а возвращается пустым.

Это код, который я использую

private void Form1_Load(object sender, EventArgs e)
    {
        string HWID = string.Empty;//creating a empty string
        ManagementClass Management = new ManagementClass("win32_processor");//declaring the system management calss
        ManagementObjectCollection MObject = Management.GetInstances();//decalring the system management object collection 
        foreach (ManagementObject mob in MObject)//having a foreach loop
        {
            if (string.IsNullOrEmpty(HWID))
            {
                HWID = mob.GetPropertyValue("processorID").ToString();//converting the HWID to string
                break;
            }
        }

     }

    private void alphaBlendTextBox2_TextChanged(object sender, EventArgs e)
    {

    }

    private void pictureBox1_Click(object sender, EventArgs e)
    {
       string loginUrl = "http://xxxxxx.xyz/customapi.php?username=" + alphaBlendTextBox1.Text + "&password=" + alphaBlendTextBox2.Text + "&hid=" + hwid + "&apiKey=APIKEYHERE&hid=" + HWID + "&ver=2";

чтобы сделать все еще более ясным, я пытаюсь сделать вызов API, все хорошо, но когда дело доходит до HWID, это терпит неудачу.

//редактировать

Я продолжаю терпеть неудачу, если кто-то захочет переписать и исправить код, я буду счастлив... Спасибо!

2 ответа

Решение

Вы должны объявить строку "HWID" за пределами Form1_Load.

Так выглядит

string HWID = string.Empty;//creating a empty string

private void Form1_Load(object sender, EventArgs e)
{
    ManagementClass Management = new ManagementClass("win32_processor");//declaring the system management calss
    ManagementObjectCollection MObject = Management.GetInstances();//decalring the system management object collection 
    foreach (ManagementObject mob in MObject)//having a foreach loop
    {
        if (string.IsNullOrEmpty(HWID))
        {
            HWID = mob.GetPropertyValue("processorID").ToString();//converting the HWID to string
            break;
        }
    }

 }

Я всегда так делал

string HWID = String.Empty;
ManagementObjectSearcher moSearcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_Processor");
foreach (ManagementObject mngObj in moSearcher.Get())
{
   HWID = mngObj["ProcessorId"].ToString();
}

Вам не нужно устанавливать строку HWID в нуль, если она не является статической или недоступна из другого метода или класса

Я знаю, что у кого-то есть несколько стилей кодирования, но если вы пишете свои комментарии над вашим кодом, это более чисто и читабельно

Смотрите этот вопрос и этот учебник

И если я хочу получить HardwareID, я создаю метод для его получения

Другие вопросы по тегам