基本上,我使用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);
            }


        }

    }```

最佳答案

如果您只想接受三个值:acceptedSerialacceptedSerial_1acceptedSerial_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: ||

10-04 21:22