0

C#で時間管理ソフトを作っています。前日に時間記録を入力していない人が Windows にログオンしたときに、システムへのアクセスが制限されるようにするにはどうすればよいですか?

元。インターネットをブロックするか、PC をブロックする

4

2 に答える 2

3

さまざまなレベルの複雑さと機能で、機能の低下を引き起こす可能性がある複数の方法があります。

プロキシ

私の意見では、最も簡単な「クリーンな」ソリューションは、ローカル コンピューターで実行され、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 因子:中程度     有効性:中程度

SRP または AppLocker

グループ ポリシーには、PC で実行されるソフトウェアを制限するための 2 つの方法があります。ソフトウェア制限ポリシーと AppLockerです。どちらにもメリットがあり、コントロールしようとするものが大きく異なります。ファイルHKCU\Software\Policiesを調べてキーを使用するか、確立された API を使用して、プログラムでポリシーを作成できます。admx

グループ ポリシーは、更新が発生した後 (通常はログオン時) にのみ有効になるため、状態がクリアされた後はログオフする必要があります。

関連:ローカル グループ ポリシー設定をプログラムで変更する方法

複雑さ:中     リスク:高     Eww 因子:高     有効性:

ログインUI

カスタム ログイン UI を使用して、時間が送信されていない場合、ユーザーがログインすることさえできないようにすることができます。これは少し強引に思えますが、それはあなたの特権です。GINA は Vista で新しいアーキテクチャに置き換えられましたが、優れたサンプルが MSDN で入手できます。この場合、アンマネージ コードで作業することになります。

ユーザーが別の手段 (生体認証やスマートカードなど) でログインできる場合、ダイアログが表示されないことがあります。

複雑さ:高     リスク:低     Eww 因子:低     有効性:

アクティブ ディレクトリ

ドメインで作業している場合は、ADSI または LDAP を介してユーザーのアカウントを無効にすることもできます。ただし、これを行うと、合理的なタイムスケジュールで元に戻すことができない場合があり、多くの設置では、他のシステムとの統合のために非常にお勧めできません (ドアアクセスコントローラーが思い浮かびます... タイムカードなし = 建物へのアクセスなし)。

さらに、大規模なドメインでは伝播の遅延が原因で、変更がユーザーに影響を与えるまでに数分から数時間かかる場合があります。

複雑さ:低     リスク:高     Eww 因子:高     有効性:

于 2014-02-27T07:20:37.213 に答える
0

Active Directory を使用しているドメインにいる場合、アカウントをロックして、コンピューターにログインできないようにすることができます。

于 2014-02-27T06:07:25.730 に答える