Windows 7でホットキー(キーボードショートカット)を設定解除する


3

Win7 Pro / 64を実行しています。誤ってヒットするたびにAltGr + dAltGr正しいAltキーです)、「Fujitsu Display Manager」がポップアップします。これは、必要なときに便利であるが、意図せずに表示されるわけではないユーティリティです。これは、ブラウザ、コマンドプロンプト、GVimなど、フォーカスのあるプログラムに関係なく発生します。Fujitsuユーティリティをアンインストールするだけでこれを解決できると思います。残念ながら、私は物事がどのように機能するかを理解することでコントロールを持ちたい人です。したがって、ホットキーを無効にする方法を知りたいです。何かアドバイス?


自己への注意:SO / SF / SUでのキーストロークのフォーマットは次のようになります:キーボードキーとしてフォーマットするにはどうすればよいですか?
ルミ

回答:


5

答えが見つかりました!すべてのホットキーを格納するレジストリキーがあると考えましたが(実際にはレジストリキーがある場合もあります)、これはこの種の問題に対処するときに従うと思われるアプローチではありません。むしろ、このページや他のページから、ショートカットのプロパティダイアログからホットキーが入力されているように見えました(ストレートプログラムではありません)。

したがって、これを解決するために必要なことは、Fujitsu Display Managerのスタートメニューショートカットを見つけ、そのプロパティダイアログを開き、ホットキーを無効にすることだけだったようです。本当に!エクスプローラーを使用C:\ProgramData\Microsoft\Windows\Start Menuして、問題のプログラムの適切なエントリまでさらに移動し、プロパティダイアログを開きました。ホットキー設定を変更するには管理者権限が必要なので、迅速なUACで問題を解決できます!

私はまだ、これらすべてのホットキー用の集中ストレージが必要だと考えています。それはまだレジストリにあると思います。だから誰かがそれを指すことができれば、それは私が受け入れるつもりの答えです。

更新:レジストリ理論を信じなくなりました。「レジストリには保存されていません。ログオン時に計算され、メモリに保存されています。」これは、ログオンするたびにファイルシステムスキャンを実行することを意味し、このようなスキャンが実際に行われていることは誰もが知っているため、このスキャン理論は私たちの経験と一致します。なぜそうなっているのか、納得のいく説明は見つかりませんでしたが、今のところ十分な情報で十分です。私はまだレジストリに情報を保存する方が良かったと信じていますが、それから私はマイクロソフトのプログラマーではありません。


2番目のリンクでそのvbsとバッチ/コマンドを機能させることができませんでした。「エラー時」行を削除し、「ショートカットパス名は.lnkまたは.urlで終わる必要があります」、Code = 80020009を取得しました。ショートカットがあることがわかっている.LNKファイルを実行しましたFindHotKey.VBS "Snipping Tool.lnk"。スクリプトを分解したくなかったので、他の場所を見てみると、RJL Softwareのショートカットキーエクスプローラーが見事に機能していることがわかりました
グレッグ

Q:このフリーウェアツールnirsoft.net/utils/hot_keys_list.htmlはどのように機能しますか?(またはマルウェア/フィッシュウェアですか?)
Krazy Glew

1

プログラミングの経験がある場合、これは見かけほど難しくありません。

を使用SetWindowsHookEx()してグローバルフックを登録し、各コールバックタイプを確認できます。ブロックしようとしているホットキーではない場合は、単に呼び出しCallNextHookEx()てキューに沿ってメッセージを渡します。ホットキーを検出したら、メッセージを静かにドロップし、次のフックを呼び出さないでください。

しかし、私は非プログラマーに適したソリューションを知りません。


1
ありがとう。興味深いAPI関数ですが、正直なところ、この特定の目的には過剰すぎるように聞こえます。単純に削除するのではなく、不要な動作にパッチを適用して、セットアップに複雑さ(および、もしかすると、もろさを知っていますか?)を追加します。
ルミ

けっこうだ。ハッキングが好きです!:)
多項式

0

ショートカットキーエクスプローラーを使用して、すべてのアプリケーションショートカットのリストを取得できます。

ショートカットキーエクスプローラーを作成して、コンピューターに読み込んだショートカットキーのリストを管理できるようにしました。ショートカットキーエクスプローラーを実行するだけで、既存のショートカットキーが自動的に読み込まれ、読みやすいリストに表示されます。このリストから、任意のアイテムをダブルクリックして、Windowsショートカットのプロパティを編集できます。これは、重複するショートカットキーまたは存在すら知らなかったショートカットキーのトラブルシューティングに最適です。http://www.rjlsoftware.com/software/utility/shortcutkeys/
から


URLにはダウンロードリンク以外は何もありません。答えを広げて、これが何であるか、それを使用して問題を解決する方法を説明できますか?
fixer1234

0

ショートカットに追加されたホットキーを見つけるvbコードがあります。

私が見つけた問題は、「ホットキー」ショートカットを含むことができるフォルダーのリストが不明確なようだということです。また、一部の場所には「キャッシュされた」ショートカットが配置されていないようですが、キーの組み合わせが有効になっているようです。また、検索するフォルダーの読み取り権限が必要です。

探していた「ゾンビ」ホットキーが見つからなかったため、時間とともにいくつかのフォルダを追加しました。

コードを正しく入力してください。

コードを.vbs拡張子のテキストファイルとして保存します。ファイルを開きます。走ります。フォルダーとサブフォルダーのリストを再帰的に調べます。許可エラーなど、一部のエラーは無視されます。

.lnkで終わるすべてのファイルを検索します。各.lnkファイルのホットキーをチェックします。

ファイルにホットキーがある場合、ファイルはメッセージボックスに表示されるメッセージ文字列に追加されます。

お役に立てれば。コードは次のとおりです。

OPTION EXPLICIT

' ms "starting"  ' ms is a message box sub with vbcr cancel 
'234567890'234567890'234567890'234567890'234567890'234567890'234567890'234567890  scale helps debugging error messages


' special folders

      ' AllUsersDesktop
      ' AllUsersStartMenu
      ' AllUsersPrograms
      ' AllUsersStartup
      ' Desktop
      ' Favorites
      ' Fonts
      ' MyDocuments
      ' NetHood
      ' PrintHood
      ' Programs
      ' Recent
      ' SendTo
      ' StartMenu
      ' Startup
      ' Templates

dim recurseCount

DIM rc
DIM lnkString
DIM strFolder
DIM  IncludeSubFolders
DIM objFSO
Dim objNetwork
Dim objShell
Dim msg
Dim HotKeyCount
HotKeyCount = 0
' ************************************************************
' Setup
' ************************************************************
SET objShell = CREATEOBJECT("wscript.shell")

SET objFSO = CREATEOBJECT("Scripting.FileSystemObject")
Set objNetwork = CreateObject("WScript.Network")
SET objFSO = CREATEOBJECT("Scripting.FileSystemObject")
lnkString = ""
recurseCount = 0

' finally found the short that had the zombie hot key in
' --> C:\Users\pkryder\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar
' it was also in --> C:\Users\pkryder\AppData\Roaming\Microsoft\IMJP10
' how why?


' C:\ProgramData\Microsoft\Windows
      strFolder = "C:\ProgramData\Microsoft\Windows\" ' objShell.SpecialFolders.Item ("Templates")
FindHotKeys strFolder


' C:\ProgramData\Microsoft\Windows
      strFolder = "C:\users\" ' objShell.SpecialFolders.Item ("Templates")
FindHotKeys strFolder




strFolder = objShell.SpecialFolders.Item("AllUsersStartup")
FindHotKeys strFolder

strFolder = objShell.SpecialFolders.Item("Programs")
FindHotKeys strFolder

strFolder = objShell.SpecialFolders.Item("Desktop")
FindHotKeys strFolder


'      "AllUsersDesktop"
strFolder = objShell.SpecialFolders.Item("AllUsersDesktop")
FindHotKeys strFolder

      ' AllUsersStartMenu
strFolder = objShell.SpecialFolders.Item ("AllUsersStartMenu")
FindHotKeys strFolder


      ' AllUsersPrograms

strFolder = objShell.SpecialFolders.Item ("AllUsersStartMenu")
FindHotKeys strFolder

      strFolder = objShell.SpecialFolders.Item ("AllUsersStartup")
FindHotKeys strFolder
      strFolder = objShell.SpecialFolders.Item ("Desktop")
FindHotKeys strFolder
      strFolder = objShell.SpecialFolders.Item ("Favorites")
FindHotKeys strFolder
      strFolder = objShell.SpecialFolders.Item ("Fonts")
FindHotKeys strFolder
      strFolder = objShell.SpecialFolders.Item ("MyDocuments")
FindHotKeys strFolder
      strFolder = objShell.SpecialFolders.Item ("NetHood")
FindHotKeys strFolder
      strFolder = objShell.SpecialFolders.Item ("PrintHood")
FindHotKeys strFolder
      strFolder = objShell.SpecialFolders.Item ("Programs")
FindHotKeys strFolder
      strFolder = objShell.SpecialFolders.Item ("Recent")
FindHotKeys strFolder
      strFolder = objShell.SpecialFolders.Item ("SendTo")
FindHotKeys strFolder
      strFolder = objShell.SpecialFolders.Item ("StartMenu")
FindHotKeys strFolder
      strFolder = objShell.SpecialFolders.Item ("Startup")
FindHotKeys strFolder
      strFolder = objShell.SpecialFolders.Item ("Templates")
FindHotKeys strFolder













if lnkString = "" then 
    ms "no hotkeys wer found"
else
    if HotKeyCount = 1 then 
            ms "done " &vbcr & HotKeyCount & " hotKey was found " & vbcr & lnkString
    else
        ms "done " &vbcr & HotKeyCount & " hotKeys were found " & vbcr & lnkString
    end if
end if




SUB FindHotKeys(BYVAL strDirectory)
    DIM objFolder 
    DIM objSubFolder
    DIM objFile
    DIM strExt
    DIM errSav 
    Dim n1 
    Dim ws1
    Dim errSav2
    dim errSav3
    dim bIsAshortcut
    Dim n2
    Dim n3
    Dim intMsgSave



    n3 = 9999
    n2 = 9999
    n1 = 9999
    ws1 = n1
    dim FileCount
    dim SubFolderCount

on error goto 0

errSav = 0
errSav2 = 0 
errSav3 = 0
bIsAshortcut = false



msg = "strDirectory" & vbcr & vbcr & strDirectory
' ms msg & vbcr & "076"

'234567890'234567890'234567890'234567890'234567890'234567890'234567890'234567890  scale helps debugging error messages
on error goto 0
on error resume next 

SET objFolder = objFSO.GetFolder(strDirectory)
errSav = err.number

FileCount =  objFolder.files.count
errSav2 = err.number
SubFolderCount = objFolder.SubFolders.count
on error goto 0


msg = msg & vbcr & "errSav2:" & errSav2 & vbcr & "errSav:" & errSav 
msg = msg &  vbcr & "FileCount:" & FileCount 
msg = msg &  vbcr & "SubFolderCount:" & SubFolderCount

' ms msg & vbcr & "092"


If errSav = 0 then  ' we have subfolders

    on error resume next 
    FOR EACH objSubFolder in objFolder.SubFolders
            errSav2 = err.number
            on error goto 0
            If errSav2 = 0 then  
            ' ms "102" 
                recurseCount = recurseCount + 1
                FindHotKeys objSubFolder.Path ' recurse through this new sub folder
                recurseCount = recurseCount - 1
            ' ms "110"
            end if  
            on error resume next 
    NEXT
    on error goto 0

'   ms "115" & vbcr & "in files" & vbcr& vbcr & strDirectory 

    n2 = 0
    on error resume next '      had some trouble with file not found? so ignore that
    FOR EACH objFile in objFolder.Files
            errSav = err.number
            n2 = n2 + 1
            dim sObjFileName
            dim iLength
            sObjFileName = objFile.name
            errSav3 = err.number
            on error goto 0
            iLength = len(sObjFileName)

            bIsAshortcut = false
            if (right(sObjFileName,4) = ".lnk")  then ' look only at the end of the string
                bIsAshortcut = true
                '  msgbox ">" & objFile.name & "<"
                else                                   ' something had .lnk embedded but not at the end
                if instr(sObjFileName,".lnk") > 0 then
                   msgbox  strDirectory & vbcr & ">" & objFile.name & "<"  & vbcr &  s'? who has lnk not at end of name
                end if
            end if 





            if bIsAshortcut  Then
                dim lnk
                dim filePath
                filepath = strDirectory & "\" & objFile.name
                ' ms "128  have an lnk file " & vbcr & filePath
                dim hotKey
                set lnk = objShell.CreateShortcut(filepath) 
                errSav2 = err.number
                hotKey = lnk.hotkey 
                if hotKey <> "" then
                    ';ms "129" & vbcr & "errSav2:" & errSav2    & vbcr & "hotKey:" & hotKey
                    HotKeyCount = HotKeyCount + 1
                    if len(lnkString) > 900 then
                        msgbox len(lnkString) & vbcr & lnkString
                        lnkString = ""
                    end if
                    if instr(lnkString,strDirectory & " | ") = 0 then
                        lnkString = lnkString & vbcr & vbcr &  "-" &  vbcr & strDirectory & " | " ' put blank and bar on the end to differentiate sub directories
                    else
                    end if
                    lnkString = lnkString & vbcr & HotKeyCount & " " & hotKey & "  " & objFile.name 
                    'ms "138" & lnkString
                    ' save to text file
                end if
            END IF
        on error resume next 

     NEXT

END IF


END SUB


sub ms(BYVAL m)
'   rc = msgbox ( "recurseCount:"&recurseCount & vbcr & vbcr & m , vbcrOKCancel)
    rc = msgbox (  m , vbOKCancel)
    if rc = vbCancel then wscript.quit

end sub


1
回答を編集して、これの使用方法と質問への回答方法を説明してください。
スコット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.