Wenn es wirklich nur das sein soll, dann musst du ja nur mit deinem C/C++ Programm eine Anfrage an den Webserver senden, auf dem sich dein Skript befindet und die Antwort auslesen (und dann eben entsprechend der Antwort handeln).
Wie genau du das anstellst ist natürlich dir überlassen - WinSock wäre definitiv ein Stichwort, wenn du nicht gerade mit dem .NET Framework arbeitest. Im Falle von .NET wäre WebRequest wohl ein entsprechendes Stichwort.

Auf der Seite des Webservers muss dann nur die Prüfung stattfinden. Wo allerdings die Daten herkommen ist dabei dir überlassen - das kann aus einer MySQL Datenbank sein, aus einer SQLite Datenbank, aus einer einfachen Textdatei, in der die entsprechenden IDs mit Zeilenumbrüchen getrennt sind, oder, oder, oder.

Dabei würde auch schon so ein minimalistisches Skript ausreichen:
Code:
<?php
isset($_GET['hwid']) or die("0");
echo (int) in_array($_GET['hwid'], file("hwids.txt", FILE_IGNORE_NEW_LINES));
?>
Dieses nimmt einen GET-Parameter "hwid" (im URL: http://.../.../checkhwid.php?hwid=BLAH) und schaut, ob dieser in der Liste "hwids.txt" drin ist und gibt dann eben entsprechend 0, oder 1 aus.