« 2007年03月 | | 2007年05月 »

CredentialProvider の Unicode 化

Microsoft が提供する Credential Provider のサンプルは、なぜか文字セットが Unicode ではなく ANSI になっています。

ICredentialProviderCredential インターフェースで扱う文字列は Unicode(WCHAR) であるため、プロジェクトの文字コードを Unicode に統一しておいたほうが、文字列を扱いやすくなります。

そこで、今回は SampleCredentialProvider を例に文字セットを変更する方法を説明します。

プロジェクトの設定

  1. メニューから [プロジェクト]->[プロパティ] の順に選択します。[ソリューション エクスプローラ] で右クリックして [プロパティ] を選択しても同じです。
  2. [プロパティ ページダイアログ] の左上 [構成] で Debug と Release のどちらの設定を行うか選びます。両方変更する場合は [すべての構成] を選びます。
  3. 左側のツリーで [構成プロパティ]->[全般] を選択します。
  4. 文字セットとして [Unicode 文字セットを使用する] を選択します。
    プロパティ ページダイアログ

helpers.cpp の修正

このままビルドすると、次のように2つのエラーが発生してしまいます。

2つのエラー

エラーは helpers.cpp で発生しています。helpers.cpp には ICredentialProvider::SetSerialization() および ICredentialProviderCredential::GetSerialization() の中から利用される関数があります。

肝心のエラーの原因は LsaInitString 関数の第2引数の文字コード指定が正しくないからのようです。helpers.cpp を次のように修正すればビルドできるようになりました。

364行目 変更前:
HRESULT LsaInitString(PSTRING pszDestinationString, PCSTR pszSourceString)
364行目 変更後:
HRESULT LsaInitString(PSTRING pszDestinationString, PCTSTR pszSourceString)

この修正を行い、正しくログオンできることを確認しました。(※正常に動作することを保証するものではありません)

Credential Provider Extender を発表しました

本日、Credential Provider Extender のβ版を発表しました。

Vista 対応製品の第1弾です。詳しくは 製品紹介のページ をご覧ください。

要望や質問がありましたら、ぜひお問い合わせください! まだβ版なので、要望をお寄せいただければ、製品版発表までに実装できるかもしれません。

SampleCredentialProvider のビルド

CredentialProvider 開発のとっかかりとして、Microsoft が公開しているサンプル をビルド・実行して感触をつかむのがお薦めです。今回は、サンプルをビルドするための環境づくりについて簡単に説明いたします。

環境

Credential Provider の開発に必要なものは次の2つです。

  • Visual C++ 2005 (2003 は不可)
  • Windows SDK (Platform SDK ではなく Windows SDK)

VC++ 2003 でビルドできないのは、Windows SDK が VC++ 2005 以降のバージョンを必須としているためです。VC++ 2005 であれば、Express Edition でもビルドできることを確認しています。

VC++ 2005 と Windows SDK が準備できたら、インクルードとライブラリの設定をしておきましょう。

  1. Visual C++ を起動し、メニューから [ツール]->[オプション] を選びます。
  2. 左側のツリーで [プロジェクトおよびソリューション]->[VC++ ディレクトリ] を選択します。
  3. [プラットフォーム] は [Win32] を選択します。[ディレクトリを表示するプロジェクト] は [インクルード ファイル] を選択します。
  4. Windows SDK の Include ディレクトリを一番上に追加します。標準のインストール先は C:\Program Files\Microsoft SDKs\Windows\v6.0\Include です。
    ディレクトリの設定
  5. 同じように、ディレクトリを表示するプロジェクトとして [ライブラリ ファイル] として Windows SDK の Lib ディレクトリを一番上に追加します。標準のインストール先は C:\Program Files\Microsoft SDKs\Windows\v6.0\Lib です。

ビルド

環境が整ったところで Microsoft が公開しているサンプル をビルドします。5つのサンプルがありますが、一番分かりやすい SampleCredentialProvider をビルドしてみましょう。

SampleCredentialProvider.sln を VC++ 2005 で開き、メニューから [ビルド]->[バッチビルド] を選びます。あらかじめ4つのビルド方法が定義されていますが、今回は [Release|Win32] をチェックして [ビルド] ボタンを押します。

バッチビルド

ビルドが成功すると、下の [出力] に [1 正常終了、0 失敗] と表示され、Release フォルダに SampleCredentialProvider.dll が生成されています。

ビルド完了

導入

SampleCredentialProvider.dll を Vista の system32 にコピーします。次に、SampleCredentialProvider\Register.reg ファイルを Vista で実行して、必要なレジストリを設定します。

以上で導入は終わりです。Vista でログオフしてみると、次のように Administrator と Guest という2つのアイコンが表示されます。Administrator アカウントが存在すれば、実際にこのアイコンをクリックしてログオンすることもできます。

SampleCredentialProvider インストール

サンプル中の "Windows Vista Credential Provider Samples Overview UPDATE.doc" が大変よくまとまっているので、このドキュメントを参考にしながら開発を進めていくとよいでしょう。このブログでも引き続き、CredentialProvider について説明していく予定です。

新入社員の田村です

はじめまして。

開発室前に立ててあるのぼりのデザインを担当しました。
パソコンでの画像が実際のぼりとなって設置されているのを見るとうれしいです。
ですが、その反面、色んな反省点が見えてきて
まだまだだなぁという事を痛感します。

まだ入社3日目で、右も左も分かりませんが、
一生懸命がんばりますので、よろしくお願いいたします。

のぼりで求人

CO-CONV の開発室は出町柳と京都大学の間の人通りの多い場所にあります。特にこの時期は新入生も多いので、なんとかこの立地を生かして求人広告をだせないか、と思い「のぼり」で求人広告をだしてみました。

nobori.jpg

よく目立ってます。はたして効果はあるのか・・・乞うご期待。

2007-2009 CO-CONV,Corp

ブログ内に記載されている社名および製品名は各社の商標または登録商標です。