앱이 안 열릴 때 복구와 초기화 전에 확인할 것
앱이 안 열린다고 바로 초기화하면 앱 안에만 있던 메모·초안·설정을 잃을 수 있습니다. 먼저 앱 하나만 실패하는지 확인하고, 해당 앱에 복구(Repair)와 초기화(Reset) 버튼이 실제로 있는지 읽어 보세요.
버튼을 누르기 전에 저장본과 내보낸 자료를 열 수 있는지, 다시 로그인할 수 있는지, 필요한 설정이 남아 있는지 확인합니다. 하나라도 모르겠다면 초기화를 미루고 앱의 공식 지원 안내부터 확인합니다.
첫 점검과 기록표 작성은 Python 없이 할 수 있으며 JSON·Python 검산은 말미의 선택 부록입니다.
먼저 앱 하나의 이름과 제공 버튼만 확인하기
- 앱 이름·게시자·실패한 실행 경로를 적고 열려 있는 작업을 저장합니다. 창이 안 열리는지 특정 문서만 실패하는지를 구분합니다.
- Windows 11의 설정 → 앱 → 설치된 앱에서 대상 옆 더 보기(…) → 고급 옵션을 확인합니다. Windows 10은 설정 → 앱 → 앱 및 기능의 대상 앱 → 고급 옵션입니다. 메뉴나 버튼이 없으면 ‘미제공 또는 확인 못 함’으로 남기고 명령어로 대신하지 않습니다.
- Repair·Reset을 누르지 않고 ‘실제 제공 여부 / 저장본 / 읽을 수 있는 내보내기·백업 / 재로그인 수단 / 설정 기록’을 메모합니다.
설명용 입력 ‘Reset 제공 / 앱 내부 자료의 별도 사본 없음’의 기대 기록은 ‘초기화 보류’입니다. 버튼이 보인다는 사실이 자료 복구를 보장하지 않습니다. Repair가 없으면 실행 결과도 ‘아직 실행 안 함’으로 두며 효과가 없었다고 만들지 않습니다.
이번 과제는 보존표를 채우고 고급 옵션을 닫으면 끝납니다. 자료·로그인·설정 중 하나라도 모르면 Reset을 보류합니다. Repair를 별도로 검토하더라도 대상과 사본을 먼저 확인하고, 모든 앱에 공통 실행 취소가 있다는 전제로 진행하지 않습니다.

앱 하나만 실패하는지 확인하기
대상 앱의 이름·게시자·버전과 실행 경로를 적습니다. 시작 메뉴 아이콘을 눌러 안 열린 것인지, 앱 창은 열리는데 특정 파일만 안 열린 것인지도 나눕니다. 이미 설치되어 있고 용도를 아는 다른 앱을 열어 보되 실제 업무 파일을 변환하거나 덮어쓰는 시험은 하지 않습니다.
다른 앱·설정까지 함께 실패하면 대상 앱 하나의 데이터 초기화를 반복하지 않습니다. 여러 앱의 공통 증상으로 범위를 다시 기록하고 지원을 받습니다. 시작 메뉴만 안 열리고 바탕화면의 동일 앱 바로 가기는 동작한다면 앱 자체의 실패로 확정할 수도 없습니다. 같은 앱의 특정 문서만 실패하면 그 문서의 사본·오류 문구를 별도로 보존합니다.
Microsoft Store 앱의 공식 기본 점검에는 앱을 정상적으로 닫고 다시 열기, 호환성과 업데이트 확인 등이 들어 있습니다. 열려 있는 문서가 있으면 저장하고 정상 종료가 가능한 때에만 재실행합니다. 응답하지 않는다는 이유로 저장 전 강제 종료하지 않습니다. Microsoft Store 앱 문제 안내
복구와 초기화 버튼이 보이는지 먼저 읽기
Windows 11은 설정 → 앱 → 설치된 앱에서 대상 옆 더 보기(…) → 고급 옵션을 확인합니다. Windows 10은 설정 → 앱 → 앱 및 기능에서 대상 앱 → 고급 옵션을 확인합니다. 일부 앱에는 고급 옵션이나 복구가 없습니다. 버튼이 없으면 찾지 못한 메뉴를 명령어로 억지로 대신하지 않습니다. Microsoft 앱과 프로그램 복구 안내
전통적인 데스크톱 프로그램은 제어판 → 프로그램 → 프로그램 및 기능에서 대상의 Repair 또는 Change가 제공될 수 있습니다. Change는 설치 프로그램의 기능 변경으로 이어질 수 있으므로 Settings의 앱 Repair와 동일한 데이터 보존 절차라고 가정하지 않습니다. 제품·설치 방식에 맞는 공식 안내와 화면의 변경 내용을 확인한 뒤 선택해야 합니다. 예상하지 않은 설치·제거·관리자 권한 요청이 보이면 중단합니다.
| 항목 | 공식 안내의 의미 | 실행 전 확인 |
|---|---|---|
| Repair | 앱 문제를 데이터 손실 없이 고치는 복구 옵션 | 대상이 맞는가, 저장됐는가, 실제 제공되는가 |
| Reset | 앱을 기본 상태로 되돌리며 앱 데이터가 제거될 수 있음 | 자료 복구·로그인·설정 기록과 앱별 경고 |
| Repair/Change 미제공 | 앱·설치 프로그램마다 옵션이 다름 | 게시자 공식 지원 경로 |
Repair는 Reset보다 먼저 검토할 수 있는 옵션입니다. Microsoft는 Repair를 데이터 손실 없는 복구로 설명하지만, 이를 모든 프로그램 설치 변경이나 모든 상황의 백업 보장으로 확대하지 않습니다. Reset은 단순히 창을 닫았다 여는 동작과도 다릅니다. Microsoft 앱 지원 도구의 옵션 설명
앱 자료를 세 갈래로 보존하기
초기화를 검토하기 전에 다음을 실제로 확인합니다. 체크리스트에 ‘백업 있음’ 한 칸만 적으면 앱 내부 자료가 빠질 수 있습니다.
- 문서·내보낸 파일: 중요한 편집 결과를 저장하고 원래 파일과 겹치지 않는 사본을 준비합니다. 앱이 공식 내보내기 기능을 제공한다면 자료 범위와 형식을 확인하고, 결과 사본을 열어 내용과 최근 변경이 포함됐는지 확인합니다. 앱이 안 열려 내보낼 수 없거나 사본을 읽을 수 없으면 초기화를 보류합니다.
- 앱 내부·동기화 자료: 메모·초안·다운로드·환경설정 등이 PC 안에만 있는지, 같은 계정의 공식 서비스에 실제로 남아 있는지 확인합니다. ‘동기화 사용’ 표시 하나로 미전송 초안까지 보존됐다고 판단하지 않습니다. 제품별 보관·복원 안내를 찾지 못하면 게시자에게 확인합니다.
- 로그인·설정: 사용 계정, 다시 인증할 수단의 사용 가능 여부와 필요한 사용자 설정을 확인합니다. 암호·복구 코드·토큰 자체를 점검표에 적지 않습니다. 인증 수단이 없거나 회사 앱의 관리 조건이 불명확하면 초기화를 멈춥니다.
File History처럼 개인 파일의 이전 사본을 보존하는 기능도 백업 범위가 있습니다. 해당 파일이 실제로 포함돼 있고 필요한 버전이 존재하는지 먼저 확인하세요. 지금 백업을 켜는 것만으로 이미 사라진 앱 데이터를 복구할 수 있다고 쓰지 않습니다. 기존 파일을 덮어쓰지 않으려면 별도 위치의 사본으로 내용을 확인하는 방법을 검토합니다. Microsoft File History 백업·복원 안내
파일의 존재와 크기 확인 연습은 파일 백업 결과를 검산하는 예제를 참고할 수 있습니다. 그 파일 복사 예제를 앱 내부 저장소에 그대로 적용하지 않습니다. 파일 사본이 있다는 판단과 앱에서 자료를 다시 불러올 수 있다는 판단은 따로 해야 합니다.
자료를 저장한 뒤 복구만 먼저 시도하기
실패가 한 앱으로 좁혀지고 Repair가 제공된다면, 현재 자료와 오류를 보존한 후 대상 고급 옵션의 복구를 선택하고 완료 상태를 확인합니다. 완료 표시 뒤에는 처음 실패했던 같은 실행 경로로 앱을 열고, 필요하면 읽기용 사본으로 원래 증상을 확인합니다. 새 가상 문서만 열린 것을 기존 업무 문서까지 복구됐다는 결과로 적지 않습니다.
앱이 열리는지와 자료가 유지되는지를 각각 확인합니다. 앱 창이 나와도 최근 메모가 사라졌다면 성공으로 표시하지 않습니다. 반대로 자료가 남아 있어도 원래 기능이 실패하면 복구 완료 메시지와 증상을 분리해 남깁니다. 일시적으로 재현되지 않는 상태도 확정 원인을 찾았다는 뜻은 아닙니다.
Store 앱 업데이트가 필요한 경우 현재 공식 업데이트 문서는 Store의 Check for Updates를 안내합니다. 문서와 실제 Store 버전에 따라 Library/Get updates 같은 표시도 있을 수 있어 자기 화면의 제공 경로를 확인합니다. 앱 업데이트 역시 먼저 저장하고 버전·업데이트 후 관찰을 남깁니다. 없는 메뉴를 만들거나 Store 캐시 초기화를 모든 앱 실패의 기본 해법으로 쓰지 않습니다. Microsoft Store 앱 업데이트 안내
초기화 앞에서 멈출 조건
Repair가 없거나 효과가 없어도 바로 Reset을 선택하지 않습니다. 고급 옵션의 초기화가 실제로 제공되는지와 최종 경고가 지칭하는 데이터 범위를 읽습니다. 다음 중 하나가 남으면 초기화 대신 앱 게시자의 공식 지원으로 넘어갑니다.
- 저장되지 않은 작업 또는 읽을 수 없는 내보내기·백업 사본이 있음
- 자료가 로컬에만 있는지, 서버에 모두 반영됐는지 모름
- 로그인할 계정·인증 수단을 다시 사용할 수 없음
- 중요한 설정을 재구성할 정보가 없음
- 여러 앱이 함께 실패하거나 회사 관리 앱의 변경 권한이 불명확함
- 대상 이름·게시자 또는 경고의 삭제 범위를 확신할 수 없음
조건을 모두 확인한 경우에도 이 글의 결과는 ‘초기화 검토 가능’입니다. 실행 결과를 보장하거나 초기화를 자동 승인하는 판정이 아닙니다. Reset은 PC 초기화(Reset this PC)와도 다른 대상입니다. 앱 실패를 이유로 OS 초기화·재설치를 먼저 진행하지 않습니다.
변경 전 기록과 자료 복원 계획 남기기
관찰 시각 / Windows 버전·에디션:
대상 앱·게시자·버전 / 실행 경로 / 원래 오류:
다른 앱·설정·특정 문서의 관찰:
Repair·Reset·Change 실제 제공 여부:
저장본 / 내보내기 범위·시각 / 사본 읽기 확인:
로컬 전용·동기화 미전송 자료 / 재로그인 수단 사용 가능 여부:
원래 사용자 설정 / 관리 담당자·게시자 공식 복원 안내:
실제 조치와 경고 / 앱 재실행 결과 / 자료·기능별 확인:
되돌리기 방법과 보존 사본 / 아직 확인하지 못한 항목:
아직 버튼을 누르지 않았다면 고급 옵션을 닫고 기존 상태와 사본을 보존하는 것이 중단 방법입니다. Repair·Reset 뒤에는 모든 앱에 공통인 실행 취소가 있다고 가정하지 않습니다. 특히 Reset으로 삭제된 로컬 자료는 이전 설정 값만 복원해 되살릴 수 없습니다. 제품의 공식 가져오기·동기화 복원 절차가 확인된 사본만 사용하고, 원래 자료를 덮어쓰지 않는 위치에서 내용부터 대조합니다. 설정도 변경 전 기록에 맞춰 복원하되, 동작하지 않으면 추가 초기화를 반복하기보다 지원에 기록을 전달합니다.
지원 상태와 검증 범위
Windows 10 일반 22H2 지원은 2025-10-14에 종료됐고 ESU·LTSC는 별도 조건입니다. Windows 11도 실제 버전·에디션에 맞는 지원 열을 확인합니다. 고급 옵션의 제공 여부는 앱과 설치 방식에 따라 달라지며 ‘Windows 11 사용’이라는 정보만으로 Repair·Reset 버튼이 있다고 판단하지 않습니다. 지원 버전 표, ESU 안내, 장치 정보 확인
Linux Python 3.12.14에서 합성 여섯 판정, 미제공 Repair의 실행 결과 모순 거부, 정상 사본 복구와 12개 검사를 실제 실행했고 입력 바이트를 보존했습니다. 이는 기록 분류의 검증입니다. 실제 Windows 앱의 복구 성공, 초기화 후 자료 보존·로그인·설정 복원과 UI 메뉴는 실행 검증하지 않았습니다.
선택 부록 Python과 합성 입력을 따로 검산하기
앞의 작은 점검과 빈 기록표를 완성했다면 이 부록을 실행하지 않아도 됩니다. 아래 코드는 합성 기록의 기대 분류를 검사하며 Windows·기기·서비스를 복구하지 않습니다. 먼저 표의 입력과 기대값을 눈으로 대조하세요. Python이 이미 설치되어 있고 기본 실행 방법을 아는 경우에만 선택해서 재현합니다.
기존 설치에 맞춰 python --version 또는 py --version 등으로 실행 이름과 버전을 확인합니다. Python 3.12가 확인됐다면 python, py -3.12 또는 python3.12 중 실제 설치에서 동작하는 명령을 사용합니다. 본문의 python3.12 표기는 작성 환경의 실행 이름이며 모든 Windows 설치의 명령을 보장하지 않습니다. 실행 이름을 찾지 못하면 이 부록을 멈추고 표를 수동 대조합니다. 이 점검을 위해 새 설치·PATH·보안 설정 변경은 필요하지 않습니다.
여섯 가상 기록에서 복구 후보와 보류 나누기
A~F는 직접 만든 독립 가상 앱 기록입니다. 같은 앱에서 연속으로 성공·실패한 이력이나 실제 앱 버전이 아닙니다. export의 verified는 설명상 사본의 내용을 확인했다고 정한 입력값이며, 코드가 내보내기 파일을 열어 확인하는 기능은 없습니다.
| 입력 | 달라지는 조건 | 기대하는 다음 확인 |
|---|---|---|
| A | 저장 안 됨, 자료·로그인 미확인 | 저장부터, 초기화 보류 |
| B | 한 앱 실패, Repair 제공·미시도, 저장됨 | Repair 후보, 초기화 보류 |
| C | Repair 효과 없음, 자료 사본 미확인 | 앱별 지원, 초기화 보류 |
| D | Repair·Reset 모두 미제공 | 앱별 지원, Reset 미제공 |
| E | 여러 앱이 실패 | 실패 범위 재확인, 개별 Reset 보류 |
| F | Repair 효과 없음, 자료·로그인·설정 확인됨 | 초기화 검토만 가능 |
아래 입력을 synthetic_input.json으로 저장합니다. 모든 true/false는 JSON 불리언입니다. repair_result의 not_tried는 미시도, did_not_help는 가상 기록상 증상 지속, not_available은 버튼 미제공입니다.
[
{
"id": "A",
"scope": "one_app",
"repair": true,
"repair_result": "not_tried",
"reset": true,
"saved": false,
"export": "unknown",
"login": "unknown",
"settings_recorded": true,
"managed": false
},
{
"id": "B",
"scope": "one_app",
"repair": true,
"repair_result": "not_tried",
"reset": true,
"saved": true,
"export": "verified",
"login": "recoverable",
"settings_recorded": true,
"managed": false
},
{
"id": "C",
"scope": "one_app",
"repair": true,
"repair_result": "did_not_help",
"reset": true,
"saved": true,
"export": "unknown",
"login": "recoverable",
"settings_recorded": true,
"managed": false
},
{
"id": "D",
"scope": "one_app",
"repair": false,
"repair_result": "not_available",
"reset": false,
"saved": true,
"export": "verified",
"login": "recoverable",
"settings_recorded": true,
"managed": false
},
{
"id": "E",
"scope": "multiple_apps",
"repair": true,
"repair_result": "not_tried",
"reset": true,
"saved": true,
"export": "verified",
"login": "recoverable",
"settings_recorded": true,
"managed": false
},
{
"id": "F",
"scope": "one_app",
"repair": true,
"repair_result": "did_not_help",
"reset": true,
"saved": true,
"export": "verified",
"login": "recoverable",
"settings_recorded": true,
"managed": false
}
]
다음 전체 코드를 analyze.py로 저장합니다. 파일을 읽고 기록 규칙만 검사하며, 앱 실행·자료 백업·Repair·Reset을 수행하지 않습니다.
"""Record decisions only. Does not repair, reset, or access app data."""
import json
import sys
from pathlib import Path
def classify(rows):
if not isinstance(rows, list):
raise ValueError('records must be a list')
out, ids = [], set()
for r in rows:
keys = {'id', 'scope', 'repair', 'repair_result', 'reset', 'saved', 'export', 'login', 'settings_recorded', 'managed'}
if not isinstance(r, dict) or set(r) != keys:
raise ValueError('invalid record fields')
if not isinstance(r['id'], str) or not r['id'].strip() or r['id'] in ids:
raise ValueError('invalid or duplicate id')
ids.add(r['id'])
for key in ['repair', 'reset', 'saved', 'settings_recorded', 'managed']:
if type(r[key]) is not bool:
raise ValueError(key + ' must be bool')
if r['scope'] not in ['one_app', 'multiple_apps', 'unknown']:
raise ValueError('invalid scope')
if r['repair_result'] not in ['not_tried', 'did_not_help', 'not_available']:
raise ValueError('invalid repair result')
if (r['repair'] and r['repair_result'] == 'not_available') or (not r['repair'] and r['repair_result'] != 'not_available'):
raise ValueError('repair option/result mismatch')
if r['export'] not in ['verified', 'unknown', 'unreadable'] or r['login'] not in ['recoverable', 'unknown', 'unavailable']:
raise ValueError('invalid preservation evidence')
decision = 'unavailable' if not r['reset'] else 'hold'
if r['scope'] != 'one_app':
next_step = 'recheck_failure_scope'
elif r['managed']:
next_step = 'managed_device_support'
elif not r['saved']:
next_step = 'save_first'
elif r['repair'] and r['repair_result'] == 'not_tried':
next_step = 'repair_candidate'
elif r['reset'] and r['export'] == 'verified' and r['login'] == 'recoverable' and r['settings_recorded']:
next_step, decision = 'reset_review_only', 'review_only'
else:
next_step = 'app_specific_support'
out.append({'id': r['id'], 'next': next_step, 'reset_decision': decision})
return out
if __name__ == '__main__':
try:
if len(sys.argv) != 2:
raise ValueError('usage: python analyze.py INPUT.json')
print(json.dumps(classify(json.loads(Path(sys.argv[1]).read_text(encoding='utf-8'))), ensure_ascii=False, indent=2))
except (ValueError, OSError, TypeError) as exc:
print('INPUT_ERROR: ' + str(exc), file=sys.stderr)
sys.exit(1)
python analyze.py synthetic_input.json을 실행하면 next는 save_first, repair_candidate, app_specific_support, app_specific_support, recheck_failure_scope, reset_review_only입니다. reset_decision은 A·B·C·E가 hold, D가 unavailable, F만 review_only입니다. F에서도 실제 자료 손실이 없다고 보장하는 출력은 없습니다.
존재하지 않는 복구 결과를 거부하고 사본으로 복구하기
D는 Repair가 없는데 사본의 repair_result만 did_not_help로 바꾸면 repair option/result mismatch 오류와 종료 코드 1이어야 합니다. 버튼이 없는데 실행했다고 적은 모순을 거부하는 검사입니다. 합성 원본에서 다시 만든 synthetic_recovered.json을 실행하면 원래 여섯 기대값이 돌아옵니다.
F의 export를 unreadable로 바꾸거나 login을 unknown으로 바꾸면 초기화는 hold가 됩니다. 확인되지 않은 값을 verified로 바꿔 판정을 통과시키지 않습니다. 실제 내보내기가 불가능한 경우에는 현재 앱 상태와 자료 위치를 보존한 채 공식 지원에 복원 방법을 먼저 묻습니다.