솔직히 고백하자면, 예전에 생각했던 것보다 훨씬 빨리 컴퓨터를 멀리하게 될지도 모릅니다. 물론 자연으로 돌아가겠다는 극단적인 의미는 아닙니다. 다만 세상에 내몰리고 있는 소프트웨어의 품질과 지능이 눈에 띄게 떨어지는 요즘 세태에 질려서, 정말 필요한 용도로만 컴퓨터를 쓰자는 생각이 들 뿐입니다. 오늘의 주제는 바로 '기본 프로그램(기본 앱)'입니다.
윈도우에서의 기본 프로그램 설정. 이것야말로 '이렇게 하면 안 된다'는 완벽한 반면교사 같은 사례입니다. 최근 마이크로소프트가 윈도우 11에서 일반 사용자가 기본 앱을 바꾸기 더 어렵게 만들었다는 기사들이 여럿 나왔는데, 사실 이건 이미 낡은 뉴스입니다. 평범한 사용자 입장에서는 한동안 계속 어려웠거든요. 저도 윈도우 11 Dev 리뷰에서 이 문제를 다룬 적이 있지만, 제 필체가 대중적인 소비에는 '그럴듯하지' 못했나 봅니다. 게다가 이건 윈도우 11에만 해당하는 문제도 아닙니다. 윈도우가 이 부분에서 얼마나 성가신지에 대해 근본적으로 새로워진 건 없습니다. 윈도우 10도 똑같았습니다. 엣지를 쓰세요, 엣지를 쓰세요. 사방에서 경고음이 울리죠. 그래서 문득 이런 생각이 들었습니다. 명령줄에서 윈도우 기본 앱을 설정해 이 소음과 잡음을 피할 방법은 없을까?
그래서 무슨 이야기를 하는 걸까?
먼저 특정 파일 형식을 특정 프로그램과 연결하는 '기본 연결(default association)'이 있습니다. 모든 운영체제에는 나름의 기본값이 있죠. 문제는 기본값에서 벗어나는 순간 재미있는 일들이 벌어진다는 겁니다. 마이크로소프트가 제 IrfanView 이미지 파일 연결을 몇 번이고 리셋시켰던 사례는 이미 소개해 드린 바 있습니다. 특정 프로그램을 기본값으로 분명히 지정해뒀는데도 윈도우 10이 여전히 가끔 확인 창을 띄웠던 경험도 있고요. 주로 미디어나 브라우저 기능 관련해서였습니다. 엣지만이 아니라 동영상 파일까지 마찬가지였습니다!

2018년, 깨끗한 설치 직후, IrfanView 사용 당시.

꽤 절박하죠?
윈도우 11에서 유일하게 달라진 점은 설정 메뉴에서 특정 파일 형식에 기본 앱을 할당하는 작업 흐름이 조금 더 복잡해졌다는 정도입니다. Dev 빌드에서는 이 기능이 다소 불안정하고 느리긴 하지만, 근본적으로는 윈도우 10과 크게 다르지 않습니다. 파일을 우클릭해서 '연결 프로그램'을 선택하는 것도 여전히 가능합니다. 지루한 이야기죠. 진짜 문제는 이 과정을 '효율적으로' 처리하려고 할 때 발생합니다!
assoc, ftype, dism의 처참한 현실
예전 윈도우 버전들은 파일 연결을 지정하거나 변경할 수 있는 다양한 명령줄 도구(assoc, ftype)를 제공했습니다. 덕분에 원하는 프로그램으로 파일을 열 수 있었죠. 그룹 정책이나 레지스트리를 통해서도 가능했습니다. 특수하게 만든 XML 파일을 통해 시스템에 파일 형식별 처리 방식을 알려주는 방식이었는데, 가장 우아한 해결책은 아니었지만 스크립트로 자동화하기는 쉬웠습니다.

그런데 이 방법은 아무 효과가 없습니다. 비슷하게 다음과 같은 시도를 해볼 수도 있습니다.
Dism.exe /online /Export-DefaultAppAssociations:C:\PS\DefaultAssoc.xml
Deployment Image Servicing and Management tool
Version: 10.0.22000.1
Image Version: 10.0.22000.132
The operation completed successfully.
생성된 XML 파일을 열어 원하는 파일 형식을 손으로 수정한 뒤 다시 가져오기(import)하면 됩니다.
<?xml version="1.0" encoding="UTF-8"?>
<DefaultAssociations>
<Association Identifier=".3g2"
ProgId="VLC.3g2"
ApplicationName="VLC media player" />
<Association Identifier=".3gp"
ProgId="VLC.3gp"
ApplicationName="VLC media player" />
<Association Identifier=".ac3"
ProgId="AppXqj98qxeaynz6dv4459ayz6bnqxbyaqcs"
ApplicationName="Groove Music" />
<Association Identifier=".adt"
ProgId="AppXqj98qxeaynz6dv4459ayz6bnqxbyaqcs"
ApplicationName="Groove Music" />
<Association Identifier=".adts"
ProgId="VLC.adts"
ApplicationName="VLC media player" />
...
Dism.exe /Online /Import-DefaultAppAssociations:C:\PS\DefaultAssoc.xml
Deployment Image Servicing and Management tool
Version: 10.0.22000.1
Image Version: 10.0.22000.132
The operation completed successfully.
그러나 윈도우 10 20H2부터 이런 방법들은 기존 사용자에게 사실상 먹히지 않습니다. 변경 자체는 할 수 있지만, 시스템이 완전히 무시합니다. 더욱이 윈도우는 이제 프로그램과 파일 형식의 연결에 해시(hash) 값을 부여하고, 이 해시를 통해 해당 변경이 사용자가 직접 수행한 정당한 것인지 검증합니다. 즉, 레지스트리를 직접 건드리는 방식으로는 해결할 수 없습니다. 수동 변경은 해시와 일치하지 않아 윈도우가 무시하기 때문이죠. 그 해시가 어떻게 계산되는지는 저도 모르겠습니다만요.

결국 어떤 방법을 시도해도 다시 설정 GUI로 돌아가서 그곳에서 변경해야 했습니다. 느리고 번거롭고, 효율성에 또 한 번의 타격입니다. 하지만 요즘 운영체제는 생산성이 아니라 성가심을 위해 설계되는 모양이니까요.
그럼 진짜 해결책은 없는가?
없습니다. 위 문제를 대체할 만한 좋고 간단하며 합리적인 방법은 제가 찾지 못했습니다. 다만 조금 다른 방식으로 불만을 표현할 수는 있습니다. 첫째, 체계적이고 규율 있게 행동하세요. 시스템의 모든 프로그램을 올바르게 설정하고, 탐색기에서 파일 형식을 우클릭해 올바른 핸들러를 영구적으로 지정해 두는 겁니다. 둘째, 성가신 기본 프로그램들이 계속 괴롭힌다면 비활성화하거나 삭제해 버리세요.
예를 들어, 저는 엣지가 전반적으로 꽤 괜찮은 브라우저라고 생각하지만, IFEO(Image File Execution Options)를 통해 제 윈도우 머신에서는 아예 실행되지 못하도록 막아두었습니다. 설정 화면 상단바에서 엣지 추천이 뜨고, 설정 곳곳에서 보이며, 브라우저로 열 수 있는 파일을 열 때마다 홍보 메시지와 함께 등장하기 때문입니다. 너무 성가시고, 어딜 봐도 절박해 보이죠. 해결책? 엣지는 실행 금지. 간단합니다. 이렇게 해 두면 SVG나 PDF 파일을 엉뚱한 프로그램으로 실수로 열 일도 없습니다. 끝. 좋은 방법인가요? 아닙니다. 그래도 필요한가요? 불행히도 예입니다.
결론
흥미롭게도 윈도우 10은 이 오래된 문제에 나름 준수한 해결책을 구현했습니다. 동영상, 음악 같은 기본 기능 유형 목록을 보여주고, 거기에 (대체로) 알맞은 프로그램을 할당할 수 있었죠. 그런데 이제 윈도우 11은 프로토콜별·확장자별로 하나씩 처리해야 하는 옛날의 복잡한 방식으로 회귀했습니다. 번거로울 뿐 아니라 일관성이 없어 혼란스럽기까지 합니다. 최악은, 이 과정에서 진짜 효율을 내고 싶어도 그게 불가능하다는 점입니다.
현재로선 윈도우 11에 어떤 앱이 어떤 파일을 열도록 알려주는 가장 좋은 방법은, 원하는 프로그램을 설치할 때 함께 지정하는 것(설치 프로그램이 백그라운드에서 대신 처리해 주므로)이고, 그 후 빠져나간 파일 형식들은 가끔 우클릭 > 연결 프로그램으로 지정해 주는 것입니다. 간단하지도, 쉽지도, 예쁘지도 않지만 그게 현실입니다. 이 글이 생산성을 폭발시키는 놀라운 팁으로 가득했으면 좋았겠지만, 아쉽게도 그렇지 않네요. 이런 무의미하고 쓸데없는 변화가 운영체제 전반의 긴 추세가 되어 기술 사용자들을 더욱 멀어지게 하고, 아무것도 모르는 대중에게는 아무 도움도 되지 않는 일이 아니길 바랄 뿐입니다. …다시 생각해보니, 잠깐만요.
그럼, 이만.