久々に技術的な話題を・・・。
ターミナルサービスでログオンした場合に ipconfig で自分の IPアドレスを調べると、もちろん、サーバー側の IP アドレスが取得されます。
以下のプログラムを用いると、ターミナルサービスであっても、自クライアントPCのIPアドレスの取得が可能です。
// getwtsip.cpp : コンソール アプリケーションのエントリ ポイントを定義します。 // Wtsapi32.lib を[構成プロパティ] - [リンカ] - [コマンドライン] にて追加する必要があります。
#include <stdio.h> #include <tchar.h> #include "stdafx.h"
#include <windows.h> #include <wtsapi32.h>
int _tmain(int argc, _TCHAR* argv[]) { DWORD dwSessionID = -1; // 0 is 1st console session created on XP, 1 is 1st console session on Vista LPTSTR pData = NULL; DWORD cbReturned = 0; WTS_CLIENT_ADDRESS* address;
ProcessIdToSessionId(GetCurrentProcessId(), &dwSessionID); WTSQuerySessionInformation (WTS_CURRENT_SERVER_HANDLE , dwSessionID ,WTSClientAddress,&pData, &cbReturned); address = (WTS_CLIENT_ADDRESS*)pData; printf("%d.%d.%d.%d\n", address->Address[2], address->Address[3], address->Address[4] , address->Address[5]); WTSFreeMemory(pData);
return 0; }
テーマ:プログラミング - ジャンル:コンピュータ
|