C ++ Как передать системный серийный номер в переменную? - PullRequest
0 голосов
/ 04 февраля 2012

Мне удалось получить серийный номер моей системы, но как мне передать сам серийный номер в переменную?

    int main()
    {
        char newSerial;
        int (*ptr) (const char[]);

        ptr = system;

        ptr("wmic bios get serialnumber");      
    }

После запуска моего кода на экране отобразится:

    SerialNumber
    xxxxxxxxxxxxx

точно так же, как это. Но то, что я хочу, это передать только «х» в переменную char, так как в ней есть тире. Откуда именно эта программа вызывает серийный номер? Какие-либо предложения? (Windows 7 x64)

Ответы [ 3 ]

1 голос
/ 07 февраля 2012

Официально разрешенным способом получения программного доступа к WMI через C ++ является COM API для WMI .См., В частности, примеры в разделе Примеры применения WMI C ++ .

Если, с другой стороны, вам нужен быстрый доступ к серийному номеру, добавьте в свою программу что-то вроде этого:

system("wmic bios get serialnumber > sn.txt");
wchar_t sn[16];
FILE* fp = fopen("sn.txt","r, ccs=UTF-8");
fgetws(sn,16,fp); //dummy read of first line
fgetws(sn,16,fp); //now sn contains 2nd line

fclose(fp);          //cleanup temp file
remove("sn.txt");  

printf("The serial Number is: %ws\n",sn);
0 голосов
/ 25 июля 2017
    ShellExecute(NULL, L"open", L"cmd.exe", L"/c wmic bios get serialnumber > sn.txt", NULL, SW_HIDE);

wchar_t sn[16];
FILE* fp = fopen("sn.txt","r, ccs=UTF-8");
fgetws(sn,16,fp); //dummy read of first line
fgetws(sn,16,fp); //now sn contains 2nd line

fclose(fp);          //cleanup temp file
remove("sn.txt");  

printf("The serial Number is: %ws\n",sn);
0 голосов
/ 30 января 2015

Вот лучший подход без использования текстового файла

QProcess proc;
//proc.start("cscript " + path, QIODevice::ReadWrite);
proc.start("wmic bios get serialnumber",QIODevice::ReadWrite);
//qDebug() << path;
proc.waitForFinished();
QString uID = proc.readAll();
qDebug()<<uID; // serial number of the laptop
...