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文字列を使う。

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です