対話型ログオンセッションを作成します。
質問
私は、マイクロソフト社の放棄したスーパーユーザーの簡易スイッチャーのと同様のユーティリティを作成しようとしていますようこそ画面を経由せずにユーザーの簡易切り替えを可能にする(ダウンロードする)、。
I(WinStationConnectW
と一緒に)文書化されていないWTSEnumerateSessions
のAPIを使用して作業の実装を持っていますが、それだけですでにログインしているユーザーに切り替えることができます。
それは?
にログインしていないユーザーに切り替えることができるようにどのように私は、ログインセッションを作成することができます
それはVistaの/七つの仕事にいいと思いますが、私は、XPをサポートする必要があります。 (私の現在のコードが既にありません)。
私は、スーパーユーザーの簡易スイッチャーはそれをしないので、これが可能であることを知っています。 (それはそれを行うには、Windowsのサービスを必要とするが)
私はC#を書いているが、私はC#にどんな答えを翻訳することができます。
解決
私はInitiateInteractiveLogon
でShellLocalMachine
のCOMオブジェクトで文書化されていないshgina.dll
関数を呼び出すことによって、XPでこれを解決します。
のみローカルシステムアカウントによって呼び出すことができます。この方法では、コンソールにユーザーをログインします。 (これは、RDPセッションにユーザがログインできない)
DLLのバージョンは、Windows 7(およびおそらくまた、Vistaの場合)に含まれ、このメソッドが含まれていません。
他のヒント
どのバージョンのWindowsは、あなたがターゲットにしたいですか?
私は簡単な方法がないと信じています。 Windows XPの場合は、 GINA にあります。 Windows Vistaのために、「資格情報プロバイダのがあります。
また、Windows XPをターゲットにしている場合、あなたがサービスを作成することができ、それは、ユーザーがキーボードの上にそれらを押したかのようにログインするためのWinlogonデスクトップにキーストロークを送信します。これは、RealVNCのか、UltraVNCので行われた、私は覚えていません。しかし、このアプローチは、Windows Vistaでの仕事をしません。