#include <stdlib.h>
#include <windows.h>

int main(int argc, char **argv) {
  HKEY connKey;
  BYTE *dataBuf;
  DWORD regType, dataSize;
  
  if(RegOpenKeyEx(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Connections",
    0, KEY_QUERY_VALUE | KEY_SET_VALUE, &connKey) != ERROR_SUCCESS)
    return 1;

  if(RegQueryValueEx(connKey, "DefaultConnectionSettings", NULL, &regType,
    NULL, &dataSize) != ERROR_SUCCESS)
    return 1;

  dataBuf = (BYTE *)malloc(dataSize);

  if(RegQueryValueEx(connKey, "DefaultConnectionSettings", NULL, &regType,
    dataBuf, &dataSize) != ERROR_SUCCESS)
    return 1;

  if(argc == 2)
    if(*argv[1] == '0')
      dataBuf[8] &= ~8;
    else
      dataBuf[8] |= 8;
  else
    dataBuf[8] |= 8;

  if(RegSetValueEx(connKey, "DefaultConnectionSettings", 0,
    regType, dataBuf, dataSize) != ERROR_SUCCESS)
    return 1;

  return 0;
}
