2012-01-03 12 views
0

NSISページで、特定のポートがローカルまたはリモートシステム上で使用可能かどうかを確認するにはどうすればよいですか?リモートシステムのポート可用性チェック

彼らはそれが数だによってポートを検出したCで簡単なプラグインを作成NSISから直接検出することができない:COMポートAbuot

+1

COMポート? IPソケットにバインドしますか? – Anders

答えて

0

これが私の基本的な考え方です:

void GetListOfLocalPorts(CList<CString, CString>& o_lstPorts) 
{ 
for(int i = 1; i <= 99; i++) 
{ 
    DCB dcb; 
    HANDLE hCom = NULL; 
    BYTE byPort = (BYTE)i; 

    CString strPort; 
    strPort.Format("COM%d", i); 

    CString strCom = (CString)"\\\\.\\" + strPort; 
    SetErrorMode(SEM_FAILCRITICALERRORS); 

    try 
    { 
     hCom = CreateFile(strCom, 0, 0, NULL, OPEN_EXISTING, 0, NULL); 

     if (hCom == INVALID_HANDLE_VALUE) 
      continue; 
     BOOL fSuccess = GetCommState(hCom, &dcb); 
     CloseHandle(hCom); 
     if (!fSuccess) 
      continue; 

    // Port exists on this machine 
     o_lstPorts.AddTail(strPort); 
    } 
    catch(...) 
    { 
    } 
} 
} 
+0

このコードはシステムプラグインで簡単に呼び出すことができますが、ローカルシステムのみであり、質問はリモートシステムに関するものです。私はWMIが動作するかもしれないと思います... – Anders

+0

私の.nsiファイルで上記のコードを使用する方法。私に知らせてください。 – user1234

+0

@ Slipy - Hi Slappy、私は実際にローカルシステムのポートのアベイラビリティチェックに役立つ必要がありました。あなたのコードやコード(私はjavaのコードを持っています)をプラグインに変換する方法と、それを.nsiファイルで使用する方法を教えてください – user1234

関連する問題