電子書籍の厳選無料作品が豊富!

VB.NETで、[Ctrl]+[Alt]+[Del]を無効にするプログラムを考えています。

グローバルキーフックを使用しないで、実現する方法はありますでしょうか?
ご教示の程お願いいたします。

A 回答 (8件)

>グローバルキーフック


これの引数っていろいろありますよね?

マウスとキーボードだけは.NETで捕らえることができます。
ただCTL+ALT+DELというショートカットは、これらの管理よりもっと深いところで行われているので、仮にCで作成してフックしても目的の制御の実現は出来ません。


>グローバルキーフックを使用しないで
となると、やはり#1さんの方法しかありません。


#1さんの参考URL中に
「SAS発生時の動作:」
というのがあります。そこに
「GINAのWlxLoggedOnSas()」
というところがあるのですが、その近辺を熟読してください。
そしてこれ
http://msdn.microsoft.com/en-us/library/aa380570 …


#1さんが示した情報は「古い」のではなく、古くから存在する実現方法というだけです。
そして現在、新たな別方法が出現しているわけではありません。

.NETで作成するDLLとCで作成するDLLは当然異なりますので、質問の
「VB.NETで、[Ctrl]+[Alt]+[Del]を無効にするプログラム」
という質問には、「無理です」としか言いようがありません。

この回答への補足

ご回答ありがとうございます。

なかなか難しい課題ですね。
貴重なご意見、誠にありがとうございます。

補足日時:2010/05/25 21:34
    • good
    • 0
この回答へのお礼

その後色々考えましたが、Vista/7 以降はマイクロソフト社も対応していないので、現実を考えますと無理だとわかりました。

この件は、残念ですが、諦めます。
皆さん、色々お知恵をいただきまして、誠にありがとうございました。

また何かの機会がございましたら、その時はお知恵をお貸しください。
どうもありがとうございました。

お礼日時:2010/05/28 11:04

失礼しました、


私の回答のイメージとしては、
展示会場等に設置する、誰でも触れるパソコンで、
ずっとある特定のプログラムのみが動作している
環境を想定して書いています
ですので、[ALT]が無理であれば、[CTRL]でも何でも
ハード的に殺してしまって、隠してあるキーボード
でユーザーがメンテナンスを行うイメージでの回答
ですので、
そもそもの考えが違うのであれば、無視してください。

連投すみません

この回答への補足

ご回答ありがとうございます。

お察しの通り、イメージが違いますね。
せっかくご回答いただいたのに、申し訳ございません。

他の方法を検討したいと思います。
ご回答ありがとうございました。

補足日時:2010/05/26 11:36
    • good
    • 0

いえ、USBキーボードを追加して、1台のパソコンに2つのキーボードがあるイメージで



一般向けは ALT を殺した方として、
もう1つのキーボードは隠した状態で使用するイメージです
(キーボードは2つ接続すれば、2つとも認識するので)

この回答への補足

ご回答ありがとうございます。

残念ながら、キーボードは一つだけです。
申し訳ございません。

補足日時:2010/05/26 11:34
    • good
    • 0

特定のPCで動かすのであれば、


キーボードばらして、ハード的に[ALT]キーを殺しておく方が楽な気がしますね

この回答への補足

ご回答ありがとうございます。

トリッキーな手法ですね。
残念ながら、[Alt]キーを完全無効にするとアクセスキーが使用できなくなりますので、それはできません。
申し訳ございません。

もう少し他の方法等を模索いたします。
どうもありがとうございました。

補足日時:2010/05/26 07:52
    • good
    • 0

#2で補足された方法は、プラットフォーム呼び出し機能でネイティブDLLを利用して、そこからグローバルフックを利用しようよいうものでしょう。

既にVBの話ではないと思います。

>[Ctrl]+[Alt]+[Del]を、全部同時に押下された場合はフックが難しいかもしれませんが、現実はタイミングがずれますので、その過程でフックして無効化できると考えています。

では[Ctrl]、[Alt]、[Del]全て無効にでもするのでしょうか?
残念ながら、その3つの入力がそろった時点で、グローバルフックとは別の機構でセキュリティ画面が開いてしまいます。要するにグローバルフックを使っても無理だということです。

#1さんが回答している方法でWindowsXP以前なら無効にできます。Windows Vista以降はおそらく無効にはできないでしょう。

この回答への補足

ご回答ありがとうございます。

キーフックですが、例えば[Ctrl]と[Alt]が押された場合、[Alt]を無効にする。
(恐らく、[Ctrl]+[Alt]押下後に[Del]押下が一般的だと感じます)

[Ctrl]+[Alt]+[Del]の直接制御が難しい場合、上記のような組み合わせを、考えています。

もう少し、色々考えてみたいと思います。
どうもありがとうございました。

補足日時:2010/05/25 21:39
    • good
    • 0

基本的に No.2さんに同意ですが


なぜそのようなプログラムを作りたいのでしょうか、

仮に作れたてもウイルスとして検出されそうですね

この回答への補足

ご回答ありがとうございます。

今回はある方より、VB.NETで[Ctrl]+[Alt]+[Del]を無効にしたい、旨の依頼があり、私のスキルではわからないため、質問させていただきました。

No.2さんの補足を参照していただけましたら、幸いです。

どうぞよろしくお願いいたします。

補足日時:2010/05/25 18:37
    • good
    • 0

>グローバルキーフックを使用しないで、実現する方法はありますでしょうか?


>できれば、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開発の環境の中で、グローバルフックを用いずにできないか?、と問い合わせていただきました。

もしそれができるのでしたら、大変わがままっぽいお願いではありますが、ご回答の程お願いいたします。

補足日時:2010/05/25 18:32
    • good
    • 0

こんにちは。



 下記サイトをご参照ください。
  http://nienie.com/~masapico/doc_DisableSAS.html
  OSの一部を書き換えるため、慎重にテストしてください。

では。

この回答への補足

ご回答ありがとうございます。

できれば、VB.NETでコード実装したいと考えています。
わがままをいって、申し訳ございません。

それと、同参照先の情報は少し古いと感じます。
できれば、「.NET 2.0」以上で対応したいと考えています。

重ね重ねわがままばかりで、申し訳ございません。

上記わがままにご回答いただけましたら、幸いでございます。
どうぞよろしくお願いいたします。

補足日時:2010/05/25 16:20
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!