カスタム Credential Provider で自動ログオンを行う方法

PlatformSDK( Windows SDK) サポートの mitsuruwです。 今年の夏もいよいよクライマックスにさしかかりましたが、皆様いかがお過ごしでしょうか。我が家は今年一度もクーラーをつけていません。去年も一年通して 3 回しかつけなかったのですが、案外扇風機でもなんとかなるものです。しかし、クーラーを使用していないため、この季節、アイロンだけは本当に大変です。なんと驚くべきことに我が家では洗濯とアイロンは私の仕事なのです!洗濯機は全自動なんだからアイロンも全自動があれば良いのに、といつも思います。 さて、アイロンは自動でかけてもらえませんが、Windows のログオンに使用される Credential Providerでは自動でログオンさせる仕組みが用意されています。今回はカスタムの Credential Provider を使用して自動でログオンを行う方法をご紹介したいと思います。 Credential Provider による自動ログオン すでにログオン アカウントとパスワードが事前に判明しているとき、カスタム Credential Providerを使用して自動でログオンを行いたい場合があります。これを実現するためのインターフェースとして、Credential Provider には以下の 2 つが用意されています。  1) GetCredentialCount() メソッドを使用した自動ログオン  Title : ICredentialProvider::GetCredentialCount Method (Windows)  URL   : <http://msdn.microsoft.com/en-us/library/bb776039.aspx>  2) SetSelected() メソッドを使用した自動ログオン  Title : ICredentialProviderCredential::SetSelected Method (Windows)  URL   : <http://msdn.microsoft.com/en-us/library/bb776034.aspx>  それぞれのインターフェースについて、もう少し詳しく見てみましょう。 1) GetCredentialCount() メソッドを使用した自動ログオンCredntial Provider は、その中に複数の資格情報タイルを持つことが可能です。例えば、前回ご紹介した SampleCredentialProvider も “Administrator” 用と “Guest”…


Windows SDK ツール: TcpAnalyzer のご紹介

~~~TCP通信のボトルネックを調査する~~~ こんにちは、ソケット通信、デジタル署名、証明書、暗号化プログラミングのサポートをさせていただいている小泉です。  普段、TCP通信のアプリケーション開発や、トラブルシューティングをされているみなさまは、自身の構築したシステムのパフォーマンス チェックはどのようにされておりますでしょうか。パフォーマンス チェックというと高価な解析ツールが必要なイメージがあり、開発の初期段階、特にプロトタイプ開発では、おざなりにされてしまいがちですよね。今回はそんな時に簡単便利な Windows SDK ツールに付属の TcpAnalyzer のご紹介をさせていただきます。  TcpAnalyzer  は、TCP の接続単位で送信側アプリケーション、受信側アプリケーション、ネットワークのいずれにパフォーマンス のボトルネックがあるかを判断できる便利な無償ツールでございます。これもまた無償ツールである 「Microsoft Network Monitor」と組み合わせることにより、どのようなデータを送受信した際にボトルネックが発生したかが具体的に確認できますので、併せてご利用ください。「Microsoft Network Monitor」 については、下記をご参照願います。ご存じですか、Microsoft Network Monitor はコマンドラインでも操作できます  1.     TcpAnalyzer でできることTcpAnalyzer は TCP の接続単位で下記の値をチェックすることができます。つまりソケット単位やコネクション単位でのパフォーマンスのチェックが可能です。  接続の状態(LISTEN,ESTABLISH,CLOSE_WAITE 等) RTO(再転送タイムアウト)値 1秒間あたりの平均送信データ量 Duplicate ACK の送受信数 未送信データ量 送信データのうち、通信相手から ACK が返されていないデータ量 受信データのうち、アプリケーションが未取得となっているデータ量 再転送率  2.     TcpAnalyzer の利用方法TcpAnalyzer の起動から、データの収集、ログの保存までの一連の手順を下記にご紹介させていただきます。操作自体は非常にシンプルですので、是非お試しください。 ①      TcpAnalyzerを起動します。「C:\Program Files」 に Windows SDK をインストールした場合、 「C:\Program Files\Microsoft…


Windows SDK ツール:Application Verifier のご紹介

前回は Windows SDK ツールそのものをご案内いたしましたが、今回は、それに同梱されている Application Verifier (アプリケーション ベリファイア) についてご紹介しましょう。 アプリケーション ベリファイアは、アプリケーションが、ある程度完成した段階で、検証のために使用し、内在しているかもしれない問題を検出してくれるツールです。メモリ リークの検出には LeakDiag ツール、ヒープメモリに関する検出には DebugDiag や PageHeap ツールなどがありますが、アプリケーション ベリファイアは、いろいろな検証項目をまとめた便利ツールでもあります。デバイス ドライバーを開発される方なら、ドライバー ベリファイアの名前をご存じかもしれません。今回は、アプリケーション側の検証ツールです。 どこにインストールされているの? Windows SDK を、既定どおりにインストールした場合、スタート ボタンから表示する [すべてのプログラム] に [Application Verifier] が登録されています。また、以下のフォルダーに関連ファイルが登録されています。 C:\Program Files\Application Verifier Application Verifier.lnk ファイルは LNK ファイルで、実体は C:\Windows\System32\AppVerif.exe にあります。つまり、コマンド プロンプトから、AppVerif.exe を指定して起動することもできます 使用方法は簡単 まずは、起動してみましょう。スタート ボタンから、[すべてのプログラム] を選び [Application Verifier] を指定します。(管理者権限が必要です。)以下のようなウィンドウが表示されます。(申し訳ないですが、このツールに日本語版はありません。そんなに複雑なメニュー構成ではありませんし、数個のメニューしか使うことはないので、覚えてしまいましょう。)   アプリケーションを検証するには、以下の手順を実施します。 1. テストしたいアプリケーション名を登録します。[File] メニューの [Add…


UI Automation のススメ

はじめまして!!Platform SDK (Windows SDK) サポート チームでご支援をさせていただいております kazuyuk です。hiroakii さんと同様に ユーザーインターフェース(UI) を担当させていただいています。 さて、初回となります今回、とても便利なのにあまり利用されていないと思われる UI Automation についてご紹介させていただこうと思います。まずは、これを見る皆さんに興味をもっていただいて何が出来るかを知ってもらう事が目的になります。少々お時間を割いていただければ幸いでございます^^   1. UI Automation とは何か アクセシビリティという言葉を聞いたことはありますか。端的に説明すれば、「様々なものの使いやすさ、利用しやすさの度合い」を指し示している概念といった所でしょうか。様々な事情を持つ人が様々なインターフェースを通じてより容易に目的を果たすことがが出来るインターフェースが求められてきています。コンピューター上でこのようなアクセシビリティの向上を支援する事を目的として作られたのが UI Automation です。 では、実際に UI Automation はどんなものかというと、様々な形で提供されているアプリケーションの UI を外部から包括的に操作できる事を目的として作られた API 群で、UI 情報を収集するためのツリー構造や、状態の変化を検知するためのイベントを通じて、様々な UI 情報にアクセスしそれを操作することができます。例えば、教育や障碍を持つコンピュータ ユーザーの補助のために自動操作によりユーザー操作を支援するといった事が考えられますし、また、自動テストのフレームワークとしても活用される事を目指しており、スクリプトからのアクセスも出来るようになっています。   2. UI Automation の利点 UI Automation を利用する事により様々なインターフェースに対して、ほぼ同一のインターフェースでアクセスできることができます。例えば、通常の Win32 ウィンドウアプリケーションでは、テキストボックスやコンボボックス、リストボックスなど様々な UI が全てウィンドウで構成されて、親子関係を構築しながら同期して表示されています。このため、Spy++ (*1) を利用することでその構造を見る事ができたり、ウィンドウを列挙することによりその内部を確認することなどができます。Internet Explore などのブラウザーにも、いろいろな UI を使用して操作することができていますが、ここで表示する HTML の画面はというと、独自にレンダリングが行われており、ウィンドウを利用した内部構造の確認はできません。(Spy++ で確認すると、HTML…


ウィンドウが表示されない

こんにちは。 PlatformSDK( Windows SDK) サポート チームで、ユーザーインタフェース(UI) を担当していますhiroakii です。UI というと漠然としていますが、主には Windows Forms、WPF、Silverlight などの目に見える部分の技術が該当します。もちろん .NET だけでなく Win32API で作成されたウィンドウなどもサポートしています。 本ブログの中では、UIに関連する情報として、開発に役立つツールやプログラム方法などをご紹介していきたいと思います。   ウィンドウが表示されないUI といえば、「ウィンドウ」や、ウィンドウ上に配置されるボタンなどの「コントロール」が中心となりますが、それらが「想定していた通りに表示されない」というご質問をいただきます。しかし、その状況はさまざまで、例えば、 ・そもそもウィンドウが表示されていない。表示の前に処理が止まっている。・表示しているが、他のウィンドウの後ろに表示されてしまっている。・なぜか非表示 (Hide) になっている。・ディスプレイの表領域外に表示されている。 など多くの状況があります。 また、状況が同じでも、それに至った原因はそれぞれで、一概にこれが原因と判断することができません。ということで、見た目だけでは原因を特定することが難しい問題ですが、まずは、どういう状況なのかを判断するため、ツールを使ってウィンドウの状態を確認してみることをお勧めします。 ウィンドウやコントロールの状態を確認するツールとしては、Visual Studio などに含まれる Spy++ (spyxx.exe) が代表的です。Visual Studio 2010 をインストールされている場合、[スタート メニュー] から [すべてのプログラム] – [Microsoft Visual Studio 2010] – [Visual Studio Tools] – [Spy++] より実行できます。 Spy++ は、Win32 API や MFC などで…


Windows サービスあれこれ (1)

こんにちは、Platform SDK (Windows SDK) サポートの tomoshi です。先日、Credential Provider の記事を書かれた mitsuruw さんと同じく、主に Windows のベース テクノロジーに関連したプログラミングのサポートを担当しています。一口に “Windows のベース テクノロジー” と申しましても、間口も奥行きも広大なテクノロジー エリアなのですが、中でも Windows サービスやイベント ログ、タスクスケジューラやパフォーマンス カウンタ関連のプログラミングを担当しています。どうぞよろしくお願いいたします。 今回は、Windows サービスを開発される際に、是非ご活用いただきたいサンプル プログラムについて、ご案内させていただきます。今回は、と申しておきながら、シリーズ物になりそうな予感です・・・!どうぞお付き合いくださいませ。   ご存じのとおり、Windows サービスというプログラムは、様々な言語で開発していただくことが可能です。ATL や .NET Framework のプロジェクトの場合、Visual Studio のプロジェクト ウィザードから ”Windows サービス” という項目を選ぶと、Windows サービスのプロジェクトをすぐに作成することが可能です。  ATL .NET Framework の C# や VB.NET Native の C/C++ ところが・・・Native の C/C++ のプロジェクトの場合は、残念ながら “Windows…


ご存じですか、Microsoft Network Monitor はコマンドラインでも操作できます

こんにちは、ソケット通信、デジタル署名、証明書、暗号化プログラミングのサポートをさせていただいている小泉です。通信プログラムの開発やネットワーク関連のトラブル シューティングを実施されている方は、既にご存じの方も多いかと思いますが、マイクロソフトではネットワーク キャプチャを取得するための「Microsoft Network Monitor」 (通称 NetMon (ネットモン))を無償で提供しています。本日は、このネットワーク キャプチャ ツールの便利な使い方をご紹介いたします。 皆様は、下記の手順にてネットワーク キャプチャ ログを取得されているのではないかと思います。 <ネットワークキャプチャ取得方法>1)     Network Monitor 3.4 を起動します。2)     Network Monitor 3.4 の “Start Page” タブで “Create a new capture tab…”  をクリックし、新規のネットワークキャプチャ タブを起動します。3)     [Capture] メニューから [Start] をクリックし、キャプチャを開始します。 4)     パケットが取得できたら、[Capture] メニューから [Stop] をクリックしキャプチャを停止します。 5)     [File] メニューの [Save As…] をクリックし、任意な名前で保存します。 そんなに難しい操作ではないですね。さてさて、日々ネットワークと格闘されている開発者や運用者の皆様、「こんな操作でさえ面倒だ」、「ネットワーク キャプチャをお客様に取得してもらいたいのだけど、ちゃんと取得いただけるか不安」と感じた事はありませんか。 そんな時!!上記の5つの手順で採取できたネットワーク キャプチャが、下記の1つのコマンドで採取できてしまうとしたらどうでしょう!! コマンド構文:nmcap /network <Network Interface> /capture…


カスタム Credential Provider の開発

  PlatformSDK( Windows SDK) サポートの mitsuruwです。主に File I/O やセキュリティなど Windows  のベーステクノロジーに関連したプログラミングのサポートを担当しております。どうぞよろしくお願いいたします。 今回は Windows Vista 以降大きく変更されたアーキテクチャの一つ、Credential Provider の開発について少しお話したいと思います。 Credential Provider とは Windows XP 以前の Windows では、ログオンの認証を行うために Graphical  Identification and  Authentication (GINA) と呼ばれる仕組みが用意されて おり、これをカスタマイズすることにより指紋認証のような独自の認証機能を実装することが可能でした。Windows Vista 以降ではこの GINA に代わって Credential Provider という仕組みが用意されており、GINA と同じく独自の認証機能を実装し、カスタマイズすることが可能です。Credential Providerはセキュリティ向上の観点からカスタマイズ可能な個所が限られていますが、その分 GINA よりもシンプルでわかりやすい仕組みになっています。   カスタムのCredential Provider を開発する上でまず意識しておかなければいけないポイントは、Credential Provider はあくまでユーザーからの資格情報( アカウントやパスワードなど Windows にログオンするために必要な情報) を取得することを目的としたインターフェースであり、それ以外の処理を実装する場合は注意が必要だという点です。例えば、Credential Provider の中で他のネットワーク…


入手可能な Windows SDK について

Platform SDK (Windows SDK) サポート チームのブログということで、まずは、Windows SDK のインストールに関してご案内いたしましょう。 今は、Windows SDK と称していますが、古くは Win32 SDK、Platform SDK という名称でした。Windows SDK という製品名になったのは Windows Vista 以降からです。 SDK は、Windows のソフトウェアを開発するためのキット (道具、ツール) です。アプリケーションの開発には、Visual Studio を利用している方も多く、SDK をインストールして、単にヘッダー ファイル (*.h) とライブラリ (*.lib) しか使っていないかもしれません。気付かれていない方が多いかもしれませんが、Windows SDK には、x86、AMD64 や IA64 用のコンパイラーも含まれており、Visual Studio 2010 と同じバージョンが同梱されています。他にも、開発用、検証用のいろいろなツールが含まれています。Windows SDK は、Windows OS がバージョンアップするたびに、新しいバージョンが無償で提供されています。最新の Windows SDK (バージョン 7.1) は、Windows XP/Windows Server 2003 から Windows…


ブログ開設のごあいさつ

日頃は、Platform SDK(Windows SDK) サポート チームをご愛顧いただきありがとうございます。我々は、サポートサービスの一環として、Windows のベース・テクノロジー、セキュリティ、ネットワーク、ユーザーインターフェースに関連する API を利用して、Windows のソフトウェアを開発いただいております技術者の皆様をご支援する事をミッションとしたサポート チームとなります。 これまでにも、たくさんの技術者の方々に、弊社サポートサービスをご利用いただき、ご支援をさせていただきました。この度、より多くの皆様に、少しでも我々Platform SDK (Windows SDK)サポート チームを知っていただければと思い、本ブログを開設させていただきました。 本ブログでは、技術者の皆様に役立つ情報、ツール、サンプルコード等を随時ご紹介していく予定ですので、お手隙の際にご覧いただければ幸いです。 Platform SDK(Windows SDK) サポート チーム