- - PR -
Windows Vistaにおけるセッション0分離対応
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-03-28 00:04
お世話になっております。
Windows2000 SP4 VC++6.0 SP6+PlatForm SDK Feb 2003 にて開発しております。 ■現象 クライアントに常駐するサービスからユーザアプリケーションを実行して、 そのアプリケーション内で通知ウィンウを表示させているのですが、 Vistaで検証したところログオンユーザのデスクトップにウィンドウが出力されません。 ■やりたいこと Vistaにおいても、サービスからキックしたプロセス内で表示させているウィンドウを、 ログオンユーザのデスクトップ上に表示させたいです。 ■質問 Vistaのセッション0の分離による影響だということが判明し、 LogonUser関数とCreateProcessAsUser関数を用いて、 サービスからプロセスを立ち上げればいいというところまではわかりました。 しかし、LogonUser関数に渡すパスワードを特定のログオンユーザに依存することなく 指定したいのですが、現在ログオンしているユーザのパスワードを取得することは できないのではないかと邪推しております。 LogonUser+CreateProcessAsUser以外の方法で、目的を満たす方法はありますでしょうか? 間違った解釈をしていましたら、ご指摘お願い致します。 //////////ソース STARTUPINFO StartupInfo; PROCESS_INFORMATION ProcessInfo; StartupInfo.cb = sizeof(STARTUPINFO); HANDLE hToken = 0; char userName[256+1]; DWORD userSize = sizeof(userName); GetUserName(userName, &userSize); LogonUser(userName, NULL, NULL, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &hToken); →第3引数(パスワード)に何を設定すればよいか・・・? CreateProcessAsUser(hToken, NULL, commandLine, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, currentPath, &StartupInfo, &ProcessInfo); | ||||||||
|
投稿日時: 2007-03-28 08:00
Windows Vista デベロッパ ストーリー: アプリケーション互換性解説書
上記の「Windows Vista に対応した解決策の活用: 」を参照。 | ||||||||
|
投稿日時: 2007-04-05 20:57
ずっと気になっていたんだけど、今日やっと目的の文書を見つけたので。
いやいや、甕星さん。ちゃんとそれを読んで、
じゃないでしょうか?そこにも、現在ログオン中のアカウントのトークンを、パスワードを入力することなく取得する方法は書かれていませんから。 で、私も「logging on account token」を中心に検索したのですが、見つかりませんでした。ところが、ひょんなことから、見つけました。 Displaying a UI That Works with Fast User Switching<microsoft.com> Displaying a UI in Operating Systems Prior to Windows Vista<microsoft.com> これらはプリント スプーラ サービスから、ポート モニタで表示する UI を表示するための方法です。お望みのことにぴったりでしょ? _________________ |
1