Что нового

Как полноценно изменить ассоциацию к расширению файла

Webarion

Осваивающий
Сообщения
143
Репутация
24
В просторах интернета нашёл код, который изменяет ассоциацию к расширению файла. Но если ассоциация к файлу раньше изменялась в ручную, через диалог открыть с помощью, то пример уже не работает. Такое же поведение у другого примера с форума: http://autoit-script.ru/index.php?topic=12685.msg81754#msg81754

Как сделать, чтобы в любом случае ассоциация изменялась?

Код:
FileExtAssoc("testass", "NotePad.exe")

func FileExtAssoc($sExt, $sApplication)
    RunWait(@COMSPEC & " /c ASSOC ." & $sExt & "=ExTest", "", @SW_HIDE)
    RunWait(@COMSPEC & " /c FTYPE ExTest=" & $sApplication , "", @SW_HIDE)
    MsgBox(0,"File Extension Application Association",'"' & $sExt & '"is now asscoiated with "' & $sApplication & '"',3)
EndFunc
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
На Windows 10 добавилась необходимость указывать приложение по умолчанию.
В большинстве вроде нужно добавить в реестр типа:
Код:
[HKEY_USERS\.DEFAULT\Software\Classes\Applications\ResourceHacker.exe\shell\open\command]
@="\"C:\\Program Files (x86)\\Resource Hacker\\ResourceHacker.exe\" \"%1\""

для Notepad++.exe добавлял это
Код:
[HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\ApplicationAssociationToasts]
"Applications\\Notepad.exe_.txt"=dword:00000000
"Applications\\Notepad.exe_.ini"=dword:00000000
"Applications\\Notepad.exe_.css"=dword:00000000
"Applications\\Notepad.exe_.inc"=dword:00000000
"Applications\\Notepad.exe_.c"=dword:00000000
"Applications\\Notepad.exe_.cpp"=dword:00000000
"Applications\\Notepad.exe_.h"=dword:00000000
"Applications\\Notepad.exe_.diz"=dword:00000000

Либо делай снимок до и после установки программы, и смотри, что изменилось. Regshot

HKEY_USERS\.DEFAULT - для вновь создаваемого, а для текущего HKEY_CURRENT_USER
 
A

Alofa

Гость
Вот весьма занимательная статья, которая объясняет многое: Windows 10 – How to configure file associations for IT Pros?

... some programs skip the user consent and set the app defaults into the registry. The main requirement for default file association is often forgotten: the end-user is in control.
Now in Windows 10 checks if registry file extension keys have not been modified to prevent file association hijacking...
 
Автор
W

Webarion

Осваивающий
Сообщения
143
Репутация
24
Спасибо AZJIO и Alofa. Я пошёл путём отслеживания изменений в реестре. Regshot, вещь незаменимая, а то я по старинке, поиск в regedit да блокнот. С десяткой видимо ещё придётся повозиться.
 
Верх