potisanのプログラミングメモ

趣味のプログラマーがプログラミング関係で気になったことや調べたことをいつでも忘れられるようにメモするブログです。はてなブログ無料版なので記事の上の方はたぶん広告です。記事中にも広告挿入されるみたいです。

2020-09-27から1日間の記事一覧

C# Windows 10のレジストリに登録されたAppID情報を取得するクラス

動作確認環境:C# 8(.NET Core 3.1)、9(.NET 5.0) レジストリからHKEY_CLASSES_ROOT\AppIDキーの情報を取得する。 C#でWindows 10のレジストリに登録されたAppID情報を取得するクラスです。レジストリから値の取得は実装していますが、取得した値の整形…

C# Windows 10のレジストリを直接参照して実行ファイル名の登録されたAppIDとその名前を取得するコード

動作確認環境:Windows 10、C#、.NET Core 3.1 レジストリを直接参照して実行ファイル名の登録されたAppIDとその名前を取得するコードです。 using System; using System.Collections.Generic; using Microsoft.Win32; class Program { static void Main() {…

C# Windows 10のレジストリを直接参照して登録アプリケーションのSupportedTypesを取得するコード

動作確認環境:Windows 10、C#、.NET Core 3.1 レジストリを直接参照して登録アプリケーションのSupportedTypesを取得するコードです。shlwapi.dllのIQueryAssociationsは列挙に非対応なので、一覧を取得する場合はこのように直接取得するしかないかもしれま…

C# Windows 10のレジストリキーハンドル情報を取得するコードとクラス

C#でWindows 10のレジストリキーハンドルの情報を取得するには非公開のWin32 API NtQueryKeyが使用できます。NtQueryKey関数に渡す構造体は可変長配列を含みますが、バイト配列で受け取ってSystem.BitConverter、System.TextEncoding.Unicode.GetStringを使…

C# Windows 10の拡張子の関連付け情報を文字列で取得するコードとクラス

Windows 10ではレジストリに記録される拡張子の関連付け情報が複雑で、レジストリを直接操作すると互換性が失われる可能性があります。shlwapi.dllの公開するAssocQueryStringW関数の使用でこの複雑さや互換性を解決できます。 なお、AssocQueryStringAでAns…

C# Windowsの拡張子の関連付けレジストリキーのハンドルと名前を取得するコード

Windows 10でレジストリから拡張子の関連付けキーのハンドルとその名前を取得するコードです。拡張子の関連付け情報を持つキーハンドルはWin32 APIのAssocQueryKeyW関数で取得できますが、.NET Core 3.1の標準機能ではレジストリキーハンドル(HKEY)の名前…

C#&Win API レジストリキーハンドルからキー名を取得する

動作確認環境:C# 8.0(.NET Core 3.1)、9.0(.NET 5.0) C#ではWin32 APIで取得したレジストリキーハンドルHKEYからMicrosoft.Win32.RegistryKeyを作成するとキーの名前(Nameプロパティ)が空の文字列""になります。ZwQueryKey関数に準ずるNtQueryKey関数…

Windows 10でPowerShell 7が実行後に消えないようにする

初期設定だとPowerShell 7はスクリプトの実行後に消えますが、レジストリを以下の通り書き換えると実行後も消えません。@は既定値です。 [HKEY_CLASSES_ROOT\Applications\pwsh.exe\shell\open\command] @="C:\Program Files\PowerShell\7\pwsh.exe" -NoExit…

Windows 10の拡張子の関連付けとレジストリ(FileExtsキー)

概要 Windows 10で拡張子の関連付け情報を得るにはHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExtsキーを確認する必要があります。それぞれ登録される情報は異なりますが、重複する場合はFileExtsキーの情報が優先されます…