2020-09-27から1日間の記事一覧
動作確認環境:C# 8(.NET Core 3.1)、9(.NET 5.0) レジストリからHKEY_CLASSES_ROOT\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() {…
動作確認環境:Windows 10、C#、.NET Core 3.1 レジストリを直接参照して登録アプリケーションのSupportedTypesを取得するコードです。shlwapi.dllのIQueryAssociationsは列挙に非対応なので、一覧を取得する場合はこのように直接取得するしかないかもしれま…
C#でWindows 10のレジストリキーハンドルの情報を取得するには非公開のWin32 API NtQueryKeyが使用できます。NtQueryKey関数に渡す構造体は可変長配列を含みますが、バイト配列で受け取ってSystem.BitConverter、System.TextEncoding.Unicode.GetStringを使…
Windows 10ではレジストリに記録される拡張子の関連付け情報が複雑で、レジストリを直接操作すると互換性が失われる可能性があります。shlwapi.dllの公開するAssocQueryStringW関数の使用でこの複雑さや互換性を解決できます。 なお、AssocQueryStringAでAns…
Windows 10でレジストリから拡張子の関連付けキーのハンドルとその名前を取得するコードです。拡張子の関連付け情報を持つキーハンドルはWin32 APIのAssocQueryKeyW関数で取得できますが、.NET Core 3.1の標準機能ではレジストリキーハンドル(HKEY)の名前…
動作確認環境:C# 8.0(.NET Core 3.1)、9.0(.NET 5.0) C#ではWin32 APIで取得したレジストリキーハンドルHKEYからMicrosoft.Win32.RegistryKeyを作成するとキーの名前(Nameプロパティ)が空の文字列""になります。ZwQueryKey関数に準ずるNtQueryKey関数…
初期設定だとPowerShell 7はスクリプトの実行後に消えますが、レジストリを以下の通り書き換えると実行後も消えません。@は既定値です。 [HKEY_CLASSES_ROOT\Applications\pwsh.exe\shell\open\command] @="C:\Program Files\PowerShell\7\pwsh.exe" -NoExit…
概要 Windows 10で拡張子の関連付け情報を得るにはHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExtsキーを確認する必要があります。それぞれ登録される情報は異なりますが、重複する場合はFileExtsキーの情報が優先されます…