Windows Management Instrumentation (4-2)
処理結果の中に漢字が含まれていたケース("SELECT * FROM Win32_LogicalDisk")の実行時に文字化けしてしまったので、
String WmiResult::getString(VARIANT *value);
メソッドを以下のように修正しました。
wmi.cpp
/* * VARIANTデータを文字列値に変換し取得する * param : データ(VARIANTポインター) * * return : String */ String WmiResult::getString(VARIANT *value) { String result; if (value != NULL) { if (isArray(value)) { string_vector list = getStringArray(value); if (!list.empty()) result = list.at(0); } else { basic_stringstream<_TCHAR> buf; if (getType(value) == VT_BOOL) { BSTR bool_str; /* * VT_BOOL型のデータをVT_BSTR型のデータに変換 * return : S_OK = 正常に変換できた(ここでは結果はチェックしない) * その他 = エラー * 参照:http://msdn.microsoft.com/en-us/library/ms221338.aspx */ VarBstrFromBool(((isByRef(value)) ? *value->pboolVal : value->boolVal), 0, LOCALE_NOUSEROVERRIDE, &bool_str); buf << _bstr_t(bool_str); } else { buf << _bstr_t(*value); } result = buf.str(); } } return result; }
これで、漢字も問題なく表示できました。