WTSQuerySessionInformationA にバグ
たまに、お客さんの中にユーザー名を全角漢字で登録してる人がいるのですが、それがきっかけで、Windows APIのバグがわかったという話。
APIファイル名 WTSAPI32.DLL
関数名: WTSQuerySessionInformationA
対象OS: Windows XP(x86)
備考: 64Bit版やWindows7、2003では問題なし。
ANSI準拠のユーザー名も問題なし。
最新の、5.1.2600.5512では駄目。
例:
WTSQuerySessionInformationA
(WTS_CURRENT_SERVER_HANDLE,ActiveSession,WTSUserName
,&User,&dwSize);
を実行。
1. ユーザー名が 「Admin」の場合「Admin」がかえってくる。
2. ユーザー名が 「ユーザー」の場合「ユー」がかえってくる。
3. ユーザー名が 「XPユーザー」の場合「XPユー」がかえってくる。
4. ユーザー名が 「山本山」の場合「山\x96」がかえってくる。
4の場合特に危険。
回避方法
・WTSQuerySessionInformatioW を使う。
・ユーザー名はANSI文字列を使う。
Comments