- ベストアンサー
VB.NETで、[Ctrl]+[Alt]+[Del]を無効にするプログ
VB.NETで、[Ctrl]+[Alt]+[Del]を無効にするプログラムを考えています。 グローバルキーフックを使用しないで、実現する方法はありますでしょうか? ご教示の程お願いいたします。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
>グローバルキーフック これの引数っていろいろありますよね? マウスとキーボードだけは.NETで捕らえることができます。 ただCTL+ALT+DELというショートカットは、これらの管理よりもっと深いところで行われているので、仮にCで作成してフックしても目的の制御の実現は出来ません。 >グローバルキーフックを使用しないで となると、やはり#1さんの方法しかありません。 #1さんの参考URL中に 「SAS発生時の動作:」 というのがあります。そこに 「GINAのWlxLoggedOnSas()」 というところがあるのですが、その近辺を熟読してください。 そしてこれ http://msdn.microsoft.com/en-us/library/aa380570(VS.85).aspx #1さんが示した情報は「古い」のではなく、古くから存在する実現方法というだけです。 そして現在、新たな別方法が出現しているわけではありません。 .NETで作成するDLLとCで作成するDLLは当然異なりますので、質問の 「VB.NETで、[Ctrl]+[Alt]+[Del]を無効にするプログラム」 という質問には、「無理です」としか言いようがありません。
その他の回答 (7)
- nak777r
- ベストアンサー率36% (49/136)
失礼しました、 私の回答のイメージとしては、 展示会場等に設置する、誰でも触れるパソコンで、 ずっとある特定のプログラムのみが動作している 環境を想定して書いています ですので、[ALT]が無理であれば、[CTRL]でも何でも ハード的に殺してしまって、隠してあるキーボード でユーザーがメンテナンスを行うイメージでの回答 ですので、 そもそもの考えが違うのであれば、無視してください。 連投すみません
補足
ご回答ありがとうございます。 お察しの通り、イメージが違いますね。 せっかくご回答いただいたのに、申し訳ございません。 他の方法を検討したいと思います。 ご回答ありがとうございました。
- nak777r
- ベストアンサー率36% (49/136)
いえ、USBキーボードを追加して、1台のパソコンに2つのキーボードがあるイメージで 一般向けは ALT を殺した方として、 もう1つのキーボードは隠した状態で使用するイメージです (キーボードは2つ接続すれば、2つとも認識するので)
補足
ご回答ありがとうございます。 残念ながら、キーボードは一つだけです。 申し訳ございません。
- nak777r
- ベストアンサー率36% (49/136)
特定のPCで動かすのであれば、 キーボードばらして、ハード的に[ALT]キーを殺しておく方が楽な気がしますね
補足
ご回答ありがとうございます。 トリッキーな手法ですね。 残念ながら、[Alt]キーを完全無効にするとアクセスキーが使用できなくなりますので、それはできません。 申し訳ございません。 もう少し他の方法等を模索いたします。 どうもありがとうございました。
- reset_cat
- ベストアンサー率68% (94/138)
#2で補足された方法は、プラットフォーム呼び出し機能でネイティブDLLを利用して、そこからグローバルフックを利用しようよいうものでしょう。既にVBの話ではないと思います。 >[Ctrl]+[Alt]+[Del]を、全部同時に押下された場合はフックが難しいかもしれませんが、現実はタイミングがずれますので、その過程でフックして無効化できると考えています。 では[Ctrl]、[Alt]、[Del]全て無効にでもするのでしょうか? 残念ながら、その3つの入力がそろった時点で、グローバルフックとは別の機構でセキュリティ画面が開いてしまいます。要するにグローバルフックを使っても無理だということです。 #1さんが回答している方法でWindowsXP以前なら無効にできます。Windows Vista以降はおそらく無効にはできないでしょう。
補足
ご回答ありがとうございます。 キーフックですが、例えば[Ctrl]と[Alt]が押された場合、[Alt]を無効にする。 (恐らく、[Ctrl]+[Alt]押下後に[Del]押下が一般的だと感じます) [Ctrl]+[Alt]+[Del]の直接制御が難しい場合、上記のような組み合わせを、考えています。 もう少し、色々考えてみたいと思います。 どうもありがとうございました。
- nak777r
- ベストアンサー率36% (49/136)
基本的に No.2さんに同意ですが なぜそのようなプログラムを作りたいのでしょうか、 仮に作れたてもウイルスとして検出されそうですね
補足
ご回答ありがとうございます。 今回はある方より、VB.NETで[Ctrl]+[Alt]+[Del]を無効にしたい、旨の依頼があり、私のスキルではわからないため、質問させていただきました。 No.2さんの補足を参照していただけましたら、幸いです。 どうぞよろしくお願いいたします。
- reset_cat
- ベストアンサー率68% (94/138)
>グローバルキーフックを使用しないで、実現する方法はありますでしょうか? >できれば、VB.NETでコード実装したいと考えています。 この条件なら無理でしょう。[Ctrl]+[Alt]+[Del]はOSがその入力を監視しているため、グローバルフックでも取得できないはずです。そもそも、そのグローバルフックを.Netで作れるのですか? まぁそれ以前に、OSの動作を変更するようなプログラムを、.Netで作ろうというのが間違ってると思うのですが・・・
補足
ご回答、ありがとうございます。 グローバルフックの件ですが、マイクロソフト社は http://support.microsoft.com/kb/319524/ja で、「.Net」でのグローバルフックをサポートしていませんが、実際には http://hongliang.seesaa.net/article/7651626.html のようにできます。 [Ctrl]+[Alt]+[Del]を、全部同時に押下された場合はフックが難しいかもしれませんが、現実はタイミングがずれますので、その過程でフックして無効化できると考えています。 今回の私の質問は、それをさらに前進させて、今依頼されていますVB.NET開発の環境の中で、グローバルフックを用いずにできないか?、と問い合わせていただきました。 もしそれができるのでしたら、大変わがままっぽいお願いではありますが、ご回答の程お願いいたします。
- akina_line
- ベストアンサー率34% (1124/3287)
こんにちは。 下記サイトをご参照ください。 http://nienie.com/~masapico/doc_DisableSAS.html OSの一部を書き換えるため、慎重にテストしてください。 では。
補足
ご回答ありがとうございます。 できれば、VB.NETでコード実装したいと考えています。 わがままをいって、申し訳ございません。 それと、同参照先の情報は少し古いと感じます。 できれば、「.NET 2.0」以上で対応したいと考えています。 重ね重ねわがままばかりで、申し訳ございません。 上記わがままにご回答いただけましたら、幸いでございます。 どうぞよろしくお願いいたします。
お礼
その後色々考えましたが、Vista/7 以降はマイクロソフト社も対応していないので、現実を考えますと無理だとわかりました。 この件は、残念ですが、諦めます。 皆さん、色々お知恵をいただきまして、誠にありがとうございました。 また何かの機会がございましたら、その時はお知恵をお貸しください。 どうもありがとうございました。
補足
ご回答ありがとうございます。 なかなか難しい課題ですね。 貴重なご意見、誠にありがとうございます。