подключал программатор через UserPort, хоть программатор и был на LPT1, в его командной строке писал LPT2. :-) Еще вот такое где-то встретил, но не проверял...
/*
Должны быть права админа. 
*/
   HANDLE hToken;
   TOKEN_PRIVILEGES tkp;
   if ( !OpenProcessToken(GetCurrentProcess(),
      TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,  &hToken) )
      return;
   LookupPrivilegeValue(NULL, SE_TCB_NAME,
           &tkp.Privileges[0].Luid);
   tkp.PrivilegeCount = 1;
   tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
   BOOLEAN bret = AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
      (PTOKEN_PRIVILEGES)NULL, 0);
   CloseHandle(hToken);
   if ( !bret )
      return;
   HINSTANCE NtDll;
   NtDll=LoadLibrary("ntdll.dll");
   if ( !NtDll)
      return ;
   ZwSetInformationProcess( GetCurrentProcess(), 16,0 , 0 );
   __try {
   _asm {
push ax
push dx
mov dx,0x378
mov al,0xff
out dx,al
pop dx
pop ax
}
   }
   __except( EXCEPTION_CONTINUE_EXECUTION )
   {
   }
return;