.data
UTF_16 szString00, "Serial Number", 0
UTF_16 szString01, "open", 0
UTF_16 szString02, "cmd.exe", 0
UTF_16 szString03, "/c wmic bios get serialnumber \r sn.txt", 0
SomeProc proc
local szBuffer[64]:word
local filePtr:ptr
add rsp,-38h
and rsp,-10h
invoke ShellExecute, null, &szString01, &szString02, &szString03, null, SW_HIDE
invoke SleepEx, 500, false
invoke fopen, CSTR("sn.txt"), CSTR("rt, ccs=UNICODE")
mov filePtr, rax
invoke fgetws, &szBuffer, 64, filePtr ; dummy read of first line
invoke fgetws, &szBuffer, 64, filePtr ; now sn contains 2nd line
invoke fclose, filePtr
invoke remove, CSTR("sn.txt")
invoke MessageBox, null, &szBuffer, &szString00, MB_OK
ret
SomeProc endp