2016-04-29 26 views
1

私は、現在ログインしているすべてのクライアントにさまざまな通知を送信するデスクトップ警告アプリケーションを作成しました。このアプリケーションはシステムトレイにあり、警告を選択するための右クリックメニューがあります。アラートが送信されると、ポップアップがアラートの種類とともに各クライアントのデスクトップに表示されます。このポップアップは単純なWindowクラスです。WPFは、Windowsのロック画面の上に表示することは可能ですか?

alertWindow.showDialog(); 

私たちのPCには、10分間何も操作しなくても自動的に画面をロックするポリシーがあります。私が知りたいのは、画面がロックされている間にアラートを表示する方法があるかどうかです。どんな助けもありがとう。

答えて

1

画像に必要な情報を入力し、WindowsランタイムAPIのWindows.System.UserProfile.Lockscreenクラスでロック画面の背景を変更することができます。

Windows.System.UserProfile.LockScreen.SetImageFileAsync(file); 
+0

これは、Windows 7のために利用可能ではないですか?これは、Windows 8/10でのみ使用可能なようです。 – Eckert

0

lockscreen自体は、事実上、winlogon権限で実行される別のユーザーセッションです。

私はずっと前にこのようなことをウィンドウ7の下でやったことがありますが、今は詳細を思い出すことはできません。

一般的なアプローチは、次のとおりです。

  • オープンWinlogonプロセスは、プロセス
  • から
  • コピーアクセストークンを扱うだけでコピーしアクセストークン
  • で新しいプロセスを作成してロック画面
  • にあなたの窓を作成します

多くのAPIコールを使用していますが、動作するのは唯一のものです。

私が家に戻ったらすぐに、私は正確にそれをやった方法についていくつかの詳細を見つけることができます。

[編集]

私は今、コードを確認する機会があったと私はもう少し複雑に概説よりi'ts言わなければなりません。

重要な要素は、システム権限で動作するサービス(C++で書いたもの)が必要なことです。 このサービスは、偽装トークンをwinlogonプロセスからコピーし、その後、その新しいトークンで新しいプロセスを起動する必要があります。参照

  • ため API関数GetTokenInformation
  • OpenProcessToken
  • DuplicateTokenEx
  • AdjustTokenPrivileges

[/編集]

関連する問題