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, я создаю метод для его получения