基本上,我使用HWID锁来锁定我的程序,但是我遇到了问题,即我的程序接受acceptedSerial_2中的任何值
这是代码,请帮助我进行改进,谢谢!
显然,当我运行程序时,可接受的序列不为0,它们是受尊重的值
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 12);
std::cout << ":: Verifying HWID \n " << std::endl;
TCHAR volumeName[MAX_PATH + 1] = { 0 };
TCHAR fileSystemName[MAX_PATH + 1] = { 0 };
DWORD serialNumber = 0;
DWORD maxComponentLen = 0;
DWORD fileSystemFlags = 0;
if (GetVolumeInformation(
_T("C:\\"),
volumeName,
ARRAYSIZE(volumeName),
&serialNumber,
&maxComponentLen,
&fileSystemFlags,
fileSystemName,
ARRAYSIZE(fileSystemName)))
{
DWORD acceptedSerial = 0; //
DWORD acceptedSerial_1 = 0; //
DWORD acceptedSerial_2 = 0; //
if (serialNumber == acceptedSerial || acceptedSerial_1 || acceptedSerial_2)
{
MessageBox::Show("Access Granted!",
"Welcome",
MessageBoxButtons::OK,
MessageBoxIcon::Exclamation);
return(0);
}
else
{
MessageBox::Show("HWID Missmatch",
"Error",
MessageBoxButtons::OK,
MessageBoxIcon::Error);
exit(0);
}
}
}```
最佳答案
如果您只想接受三个值:acceptedSerial
,acceptedSerial_1
和acceptedSerial_2
,则逻辑表达式将为if ((serialNumber == acceptedSerial) || (serialNumber == acceptedSerial_1) || (serialNumber == acceptedSerial_2))
。
但是,只要if (serialNumber == acceptedSerial || acceptedSerial_1 || acceptedSerial_2)
或true
不等于零,则当前使用的acceptedSerial_1
始终为acceptedSerial_2
,即使它们不等于serialNumber
。
请引用C++ Logical OR operator: ||。