Windows 8/8.1/10で対話型サービス ダイアログを表示したい
あの通知ダイアログの実態は「Interactive Services Detection」というらしいのですが、表題のバージョンで直接起動すると「ファンクションが間違っています」とか表示されて怒られます。
Windows Vista/7と2008/R2で利用できた対話型サービス ダイアログの検出・通知機能、Windows 8/10及び2012以降では標準で無効に設定されているそうです。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows\NoInteractiveServices がトリガになっており、従前は"0"、Windows 8 以降は"1"が設定されているそうです。
手元の Windows 10 環境でこの値を0に書き換えてやると、無事に Interactive Service Detection が起動できるようになりました。
公式:
はまってる事例とか:
- [Fujitsu] 新 OS 使用時の留意事項 (4.2. メッセージ通知に関する留意事項)
- [TechNet] UI0Detect (Interactive Service Detection) がエラーで起動できない
EntryServiceとかSexeみたいにデスクトップアプリを無理矢理サービス化してる人とか、セッション0使うレガシーアプリとか、まともに使おうとするとUAC周りでもはまりそう。
VNC越しで操作してるうち、やったーこれでサービスでもウインドウが拝めるぞーって思って、いざ切り替えた途端に閉め出されちゃって、ちょっと涙目。
【追記】RealVNC 4 以降はセッション0への切り替えに対応しない様子(お行儀が良い)。3.x 系から発展する UltraVNC を通常の手順でサービスインストールする場合、暗転ないしセッション0切り替え時も一瞬切断されるが、再接続して切り替え後のデスクトップを操作可能。リモートKVMみたいなものは持ってないけど、遠隔地に配置する必要がある場合は、サービスの一つとして仕込んでおくと良さそう。