В каждом ключе, которому предшествует точка, посмотрите данные по умолчанию:
a. Если значение по умолчанию не пусто , , этого достаточно для указания того, что «предыдущая точка» предназначена для сопоставления файлов во всех Windows NTверсия , затем попробуйте открыть имя ключа, как указано в данных значения, просто говорит TheKeyNameMentioned .
a1) Если есть подключей shell\open\command
в TheKeyNameMentioned , затем проверьте существование пути, указанного значением по умолчанию этого ключа;если путь существует, существует приложение по умолчанию, связанное с расширением;если путь не существует, приложение по умолчанию неизвестно.Чтобы получить описание расширения файла, посмотрите значение по умолчанию TheKeyNameMentioned .Чтобы получить описание программы, сначала проверьте, содержит ли следующий ключ значение-имя, равное пути к файлу EXE, то есть HKCR\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
.Если оно есть, посмотрите на данные значения, чтобы получить описание файла;если его там нет, используйте GetFileVersionInfo () напрямую, чтобы получить описание файла.
a2) Если , то нет подразделов shell\open\command
в TheKeyNameMentioned, тогда приложение по умолчанию неизвестно.Чтобы получить описание расширения файла, посмотрите значение по умолчанию TheKeyNameMentioned .
b. В Windows Vista и более поздних версиях, когда точка [a] не удается, вам нужна дополнительная проверка.Если значение по умолчанию пусто , проверьте, есть ли у ключа подключ с именем OpenWithProgIDs
.
Если существует OpenWithProgIDs
подраздел существует ,используйте RegEnumValue (), чтобы найти имя первого встреченного значения, которое соответствует критериям, то есть имя имени значения должно указывать на существующий ключ (просто говорит TheKeyNameMentioned .) сто же имя, что и имя значения.Если TheKeyNameMentioned существует, этого достаточно, чтобы указать, что «предыдущая точка» предназначена для ассоциации файлов .Для следующих шагов прочитайте точку a1 и a2 .
Если OpenWithProgIDs
подраздел не существует ,приложение по умолчанию неизвестно.Чтобы получить описание расширения файла, посмотрите значение по умолчанию TheKeyNameMentioned .