C#で時間管理ソフトを作っています。前日に時間記録を入力していない人が Windows にログオンしたときに、システムへのアクセスが制限されるようにするにはどうすればよいですか?
元。インターネットをブロックするか、PC をブロックする
C#で時間管理ソフトを作っています。前日に時間記録を入力していない人が Windows にログオンしたときに、システムへのアクセスが制限されるようにするにはどうすればよいですか?
元。インターネットをブロックするか、PC をブロックする
さまざまなレベルの複雑さと機能で、機能の低下を引き起こす可能性がある複数の方法があります。
私の意見では、最も簡単な「クリーンな」ソリューションは、ローカル コンピューターで実行され、HTTP プロキシとして機能するサービスを作成することです。ローカル ブラウザーはプロキシを使用するように構成され、必要に応じて、続行するにはユーザーがパンチを入力する必要があることを示す静的ページを返します。
ユーザーは、プロキシ設定を再構成するか、システムのデフォルト以外のブラウザを使用することで、プロキシをバイパスできる場合があります。これらの問題はどちらも、ほとんどの IT 部門がグループ ポリシーを使用して解決できます。
関連: .Net 用のオープン ソース プロキシ ライブラリ
複雑さ:中程度 リスク:中程度 Eww 因子:低 有効性:中程度
スクリーンセーバーとほぼ同じ方法で、セカンダリ デスクトップを作成し、分離されたデスクトップに独自のウィンドウを表示できます。必要な情報を収集したら、デフォルトのデスクトップに戻り、作成したデスクトップを破棄します。
関連:デスクトップの切り替え - CodeProject、デフラグ ツール - デスクトップ
複雑さ:中程度 リスク:低 Eww 因子:低 有効性:高
実装を簡単にする場合、おそらく最も簡単なことは、WM_CLOSE開くのが気に入らない新しいプロセスに単純に送信することです。を使用して新しいウィンドウを調べ、気に入らないプロセスであることがわかった場合WindowOpenedEventは呼び出します。Process.CloseMainWindow
一方、ユーザーは、非常にすばやく読むか、モーダル ダイアログを開くなどしてウィンドウ メッセージが表示されないようにすることで回避できます。気に入らないアプリケーションがユーザーに終了するかどうか尋ねてきた場合、このアプローチはいくぶん中立的です。
複雑さ:低 リスク:中 Eww 因子:高 有効性:低
にあるREG_SZ名前付きの代替値を指定すると、プログラムを の代わりに実行できます。次に、ユーザーがいたずらかナイスかを確認し、条件付きで を開始できます。ShellHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogonexplorerexplorer
ユーザーは、explorerタスク マネージャーなどを使用して自分で起動することにより、アプリケーションをバイパスすることができます。
複雑さ:低 リスク:高 Eww 因子:中程度 有効性:中程度
グループ ポリシーには、PC で実行されるソフトウェアを制限するための 2 つの方法があります。ソフトウェア制限ポリシーと AppLockerです。どちらにもメリットがあり、コントロールしようとするものが大きく異なります。ファイルHKCU\Software\Policiesを調べてキーを使用するか、確立された API を使用して、プログラムでポリシーを作成できます。admx
グループ ポリシーは、更新が発生した後 (通常はログオン時) にのみ有効になるため、状態がクリアされた後はログオフする必要があります。
関連:ローカル グループ ポリシー設定をプログラムで変更する方法
複雑さ:中 リスク:高 Eww 因子:高 有効性:高
カスタム ログイン UI を使用して、時間が送信されていない場合、ユーザーがログインすることさえできないようにすることができます。これは少し強引に思えますが、それはあなたの特権です。GINA は Vista で新しいアーキテクチャに置き換えられましたが、優れたサンプルが MSDN で入手できます。この場合、アンマネージ コードで作業することになります。
ユーザーが別の手段 (生体認証やスマートカードなど) でログインできる場合、ダイアログが表示されないことがあります。
複雑さ:高 リスク:低 Eww 因子:低 有効性:高
ドメインで作業している場合は、ADSI または LDAP を介してユーザーのアカウントを無効にすることもできます。ただし、これを行うと、合理的なタイムスケジュールで元に戻すことができない場合があり、多くの設置では、他のシステムとの統合のために非常にお勧めできません (ドアアクセスコントローラーが思い浮かびます... タイムカードなし = 建物へのアクセスなし)。
さらに、大規模なドメインでは伝播の遅延が原因で、変更がユーザーに影響を与えるまでに数分から数時間かかる場合があります。
複雑さ:低 リスク:高 Eww 因子:高 有効性:低
Active Directory を使用しているドメインにいる場合、アカウントをロックして、コンピューターにログインできないようにすることができます。