0

システムのシリアル番号を取得できましたが、シリアル番号自体を変数に渡すにはどうすればよいですか?

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

        ptr = system;

        ptr("wmic bios get serialnumber");      
    }

コードを実行すると、画面に次のように表示されます。

    SerialNumber
    xxxxxxxxxxxxx

まさにこのように。しかし、私が望むのは、ダッシュが含まれているため、「x」だけを char 変数に渡すことです。シリアル番号を呼び出すプログラムは正確にはどこからですか? 助言がありますか?(Windows7 x64)

4

3 に答える 3

1

C++ を介してプログラムから WMI にアクセスする公式に認可された方法は、COM API for WMIです。具体的には、 WMI C++ Application Examplesの例を参照してください。

一方、シリアル番号にすばやくアクセスしたい場合は、次の行に沿って何かをプログラムに追加します。

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);
于 2012-02-06T22:29:59.917 に答える
0

これは、テキストファイルを使用しないより良いアプローチです

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
于 2015-01-30T02:40:08.633 に答える
0
    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);
于 2017-07-25T10:00:32.527 に答える