윈 도 우 삭제할수 없는 시스템 앱, 삭제 방법
2023.01.01 13:57
설정창 앱리스트엔 안나오고
문제는, 개인에 따라 불필요한게 많이 설치돼 있다는 것입니다.
밑의 내용들은
알아내면서 경험한 그대로를 적었습니다.
시스템 앱 확인은 파워쉘에서,
get-appxPackage -allusers | select PackageFullName,NonRemovable,SignatureKind,Status
NonRemovable True 라 표시된게 제거가 차단된 앱들입니다.
삭제할려면 무조건 에러가 뜨고, 그냥은 제거 불가능입니다.
이렇게 제거 안된다는 에러가 뜹니다.
윈도우에선 시스템 앱을 제거하는 기능자체가 없습니다.
제거 방법을 찾다 구글링대로 해보면,
제컴 윈11에선 먹히질 않고, 설명이 안된 에러들때문에 한참 헤맸습니다.
제거 방법 핵심은,
이폴더에 있는 C:\ProgramData\Microsoft\Windows\AppRepository
StateRepository-Machine.srd (윈도우 앱 데이터베이스 파일) 에 앱마다 저장된
IsInbox 1 값을 0 으로 바꾸면 되는데,
(편집하기전, 원래 StateRepository-Machine.srd 는 복사해 백업해 두는게 좋습니다.)
그냥은 편집이 불가능하기에,
첫째.
NT Authority\System(TrustedInstaller) 권한으로
StateRepository-Machine.srd 이파일을 편집할수 있어야 돼고,
(제 작성글 중에 설명해 놓은게 있습니다.)
둘째.
StateRepository-Machine.srd 파일을 볼수 있고
편집할수 있는 프로그램이 있어야 됩니다.
( 오픈소스 무설치, DB Browser for SQLite : https://sqlitebrowser.org/dl/ )
구체적으로 얘기하면,
SYSTEM 권한으로 DB Browser for SQLite 에 StateRepository-Machine.srd 를 열어서
그냥 IsInbox 값을 바꾸면 저런 데이터베이스 에러가 뜹니다. ( 이게 윈10과 윈11이 다른 점이라 합니다. )
윈도우 모든권한과 상관없는 데이터베이스 자체 차단기능 에러로 추측합니다.
저 에러를 피하기 위해
Database Structure > Triggers 리스트중,
오른쪽 Schema 명령구문에서 "ON Pacakge" 라 써진 Triggers 리스트를 다 찾아내서,
윈11 제컴에선 5개 Triggers 리스트에
"ON Package" 라는 표현이 있었습니다.
TRG_AFTERINSERT_Package_SRJournal;
TRG_AFTERINSERT_Package_PackageIdentity;
TRIGGER TRG_AFTERUPDATE_Package_SRJournal;
TRIGGER TRG_BEFOREDELETE_Package_SRJournal;
TRIGGER TRG_IDX_Package_PackageFamily_ResourceId_Architecture_Version__WorkId;
이걸 다 삭제하면,
시스템 앱 제거를 차단한 IsInbox 1 값을 0 으로 바꿔도 데이터베이스 에러가 안뜹니다.
(찾은 각 Triggers 리스트 오른쪽 Schema 명령구문을 그대로 복사.저장해놓고 삭제하고
그대로 붙여넣기하면 삭제된 그 Triggers 새로 복구됩니다.)
그리고 다시 제거한 5개 Triggers 리스트를 원상 복구하면 됩니다.
5개 Trigger 를 삭제한후,
Browse Data > Package로 들어가면 컴에 설치된
모든 앱들이 나오고
오른쪽에 "IsInbox" 값을 0 으로 바꾸면 됩니다.
이과정들을 일일히 클릭하지 않고,
.sql 스크립트를 짜서 저 프로그램에서 바로
File > Import > Database From SQL File 시킬수도 있습니다.
밑의 긴 코드는
위 과정을 간편하게 하기위해 .sql 파일로 저장한 스크립트입니다.
한글로 설명을 붙였고, 읽어보면 그렇게 어렵지 않은 내용입니다.
/* 먼저 On Package 라 씌어진 Trigger들을 삭제 */
DROP TRIGGER TRG_AFTERINSERT_Package_SRJournal;
DROP TRIGGER TRG_AFTERINSERT_Package_PackageIdentity;
DROP TRIGGER TRG_AFTERUPDATE_Package_SRJournal;
DROP TRIGGER TRG_BEFOREDELETE_Package_SRJournal;
DROP TRIGGER TRG_IDX_Package_PackageFamily_ResourceId_Architecture_Version__WorkId;
/* 그리고 원하는 윈도우 시스템 앱들의 IsInbox 값을 0으로 바꿈 */
/* UPDATE Package SET IsInbox=0 WHERE PackageFullName='Microsoft.AAD.BrokerPlugin_1000.19580.1000.0_neutral_neutral_cw5n1h2txyewy';
UPDATE Package SET IsInbox=0 WHERE PackageFullName='Microsoft.MicrosoftEdgeDevToolsClient_1000.22621.1.0_neutral_neutral_8wekyb3d8bbwe';
UPDATE Package SET IsInbox=0 WHERE PackageFullName='Microsoft.Windows.OOBENetworkCaptivePortal_10.0.21302.1000_neutral__cw5n1h2txyewy';
UPDATE Package SET IsInbox=0 WHERE PackageFullName='Microsoft.Windows.OOBENetworkConnectionFlow_10.0.21302.1000_neutral__cw5n1h2txyewy';
UPDATE Package SET IsInbox=0 WHERE PackageFullName='F46D4000-FD22-4DB4-AC8E-4E1DDDE828FE_10.0.22621.1_neutral_neutral_cw5n1h2txyewy';
UPDATE Package SET IsInbox=0 WHERE PackageFullName='Microsoft.AsyncTextService_10.0.22621.1_neutral__8wekyb3d8bbwe';
UPDATE Package SET IsInbox=0 WHERE PackageFullName='Microsoft.Win32WebViewHost_10.0.22621.1_neutral_neutral_cw5n1h2txyewy';
UPDATE Package SET IsInbox=0 WHERE PackageFullName='Windows.PrintDialog_6.2.2.0_neutral_neutral_cw5n1h2txyewy'; */
UPDATE Package SET IsInbox=0 WHERE PackageFullName='Microsoft.MicrosoftEdge_44.22621.963.0_neutral__8wekyb3d8bbwe';
/* 삭제했던 5개 Trigger들을 다시 생성 (밑의 명령문구는 각 Trigger들 오른쪽 Schema 부분에 표시돼있었던 내용임)*/
CREATE TRIGGER TRG_AFTERINSERT_Package_SRJournal AFTER INSERT ON Package FOR EACH ROW
BEGIN
INSERT OR IGNORE INTO PackageIdentity (PackageFamily, PackageFullName) VALUES(NEW.PackageFamily, NEW.PackageFullName);UPDATE Sequence SET LastValue=LastValue+1 WHERE Id=2 ;INSERT INTO SRJournal(_WorkId, ObjectType, Action, ObjectId, PackageIdentity, WhenOccurred, SequenceId)SELECT workid(), 1, 1, NEW._PackageID, pi._PackageIdentityID, now(), s.LastValue FROM Sequence AS s CROSS JOIN PackageIdentity AS pi WHERE is_srjournal_enabled()AND s.Id=2 AND pi.PackageFullName=NEW.PackageFullName;
END;
CREATE TRIGGER TRG_AFTERINSERT_Package_PackageIdentity AFTER INSERT ON Package FOR EACH ROW
BEGIN
INSERT OR IGNORE INTO PackageIdentity (PackageFamily, PackageFullName) VALUES(NEW.PackageFamily, NEW.PackageFullName);
END;
CREATE TRIGGER TRG_AFTERUPDATE_Package_SRJournal AFTER UPDATE ON Package FOR EACH ROW WHEN is_srjournal_enabled()
BEGIN
UPDATE Sequence SET LastValue=LastValue+1 WHERE Id=2 ;INSERT INTO SRJournal(_WorkId, ObjectType, Action, ObjectId, PackageIdentity, WhenOccurred, SequenceId)SELECT workid(), 1, 2, NEW._PackageID, pi._PackageIdentityID, now(), s.LastValue FROM Sequence AS s CROSS JOIN PackageIdentity AS pi WHERE s.Id=2 AND pi.PackageFullName=NEW.PackageFullName;
END;
CREATE TRIGGER TRG_BEFOREDELETE_Package_SRJournal BEFORE DELETE ON Package FOR EACH ROW WHEN is_srjournal_enabled()
BEGIN
UPDATE Sequence SET LastValue=LastValue+1 WHERE Id=2 ;INSERT INTO SRJournal(_WorkId, ObjectType, Action, ObjectId, PackageIdentity, WhenOccurred, SequenceId)SELECT workid(), 1, 3, OLD._PackageID, pi._PackageIdentityID, now(), s.LastValue FROM Sequence AS s CROSS JOIN PackageIdentity AS pi WHERE s.Id=2 AND pi.PackageFullName=OLD.PackageFullName;
END;
CREATE TRIGGER TRG_IDX_Package_PackageFamily_ResourceId_Architecture_Version__WorkId BEFORE INSERT ON Package FOR EACH ROW
BEGIN
SELECT CASE WHEN ((SELECT _PackageID FROM Package WHERE PackageFamily=NEW.PackageFamily AND ResourceId IS NEW.ResourceId AND Architecture=NEW.Architecture AND Version=NEW.Version AND _WorkId=NEW._WorkId) IS NOT NULL)THEN RAISE(ABORT, 'INSERT INTO "Package" violates the unique index "IDX_Package_PackageFamily_ResourceId_Architecture_Version__WorkId"') END;
END;
그리고 이젠,
내가 원하는 시스템 앱을 삭제했습니다.
이건 관리자 권한으로 해도 됩니다.
2차로 또 다른 시스템 앱도 삭제해봤습니다.
엣지는 하나만 설치돼 있는게 아니고, EdgeDevTools, Edge Stable, Edge 구버전..
4개나 컴에 설치돼 있습니다.
저기 에러는 현재 사용중인 Edge Stable 삭제에러인데, 저건 시스템 앱이 아닙니다.
시스템 앱중 *OOBENetwork* 앱들은 관리자 권한에선 삭제가 안되길래,
NT Authority\System 권한으로 띄운 새창에서 해보니
문제없이 삭제가 됐습니다.
StateRepository-Machine.srd 앱 데이터베이스 파일 편집때,
이런 에러가 떳지만, 수정한 내용이 정상 반영됐다는 메세지도 같이 있어
무시하고 진행해도 정상적으로 시스텝 앱이 삭제 되었습니다.
지금 제컴에 남아있는 윈도우 앱들입니다.
댓글 [8]
-
빨강모자 2023.01.01 14:56 -
zerojiddu 2023.01.01 15:30 답변 고맙습니다.
복 받을실꺼예요 ㅡ.,ㅡ;;
-
우인 2023.01.01 17:31
제겐 너무어렵네요~~ 수고많으셨습니다.
-
코코당 2023.01.01 23:04
와우~~ 새해 첫 선물 감사합니다.
시간나면 앱을 확인하면서 삭제해봐야 겟어요.
잘되네요
-
슈머슈마 2023.01.01 23:17
정보 감사합니다. 정말 어렵긴 하네요
-
sadold 2023.01.04 15:19
윈10에서는 TRG_AFTER_UPDATE_Package_SRJournal 이것만 지워도 에러 안 생기는 유튜브 영상도 있네요
윈11은 어떨지 모르겠지만
https://github.com/SoftSonic83/AppxDBEditor 이거 받아서 샌드박스에서 돌려보니
select 하면 계속 true 로 표시되지만 삭제는 되네요
-
zerojiddu 2023.01.04 17:55 저도 .srd 파일속 삭제를 원하는 시스템 앱 설정을 0으로 바꿔도
NonRemovable True 표시는 됐어요.
하지만 시스템 앱들 삭제는 원하는 대로 됐고,
.srd 속 앱리스트에서도 삭제가 되고, 컴에서도 싹 제거가 됐어요.
제가 삭제한 5개중에 포함된 이 트리거 하나만(TRG_AFTER_UPDATE_Package_SRJournal )
삭제해보진 않았어요.
님이 에러 안뜨고, 삭제가 정상적으로 됐다면 그것도 방법이겠죠.
-
sadold 2023.01.05 02:00
그렇군요.. 직접 해보진 않았어요...
TRG_AFTER_UPDATE_Package_SRJournal 만 지우니 0으로 바뀌는 동영상을 봐서요
버전마다 어떻게 될지 알 수가 없으니...
시간내서 샌드박스에서 한번 해봐야겠네요....
- 추가
권한 설정을 해야 해서 StateRepository-Machine.srd 이 파일을 다른데로 복사해서 연 다음 해보니
TRG_AFTERUPDATE_Package_SRJournal 만 삭제하니 동작이 되긴 하네요
덕분에 좋은 내용 알게 됐네요
번호 | 제목 | 글쓴이 | 조회 | 추천 | 등록일 |
---|---|---|---|---|---|
[공지] | 강좌 작성간 참고해주세요 | gooddew | - | - | - |
4261 | 윈 도 우| 배치파일 명령어 > nul 2>&1 해석 [5] | 컨피그 | 1382 | 12 | 01-11 |
4260 | 윈 도 우| BCD 백업 및 복구 프로그램 입니다 [14] | 지룡자 | 2926 | 41 | 01-10 |
4259 | 하드웨어| Windows 11에서 Realtek 오디오 드라이버를 쉽게 수정하는 ... [6] | VᴇɴᴜꜱGɪ | 3024 | 7 | 01-04 |
4258 | 하드웨어| USB 키패드를 매크로 키패드로 사용하기 [7] | 지후빠 | 2177 | 16 | 01-02 |
» | 윈 도 우| 삭제할수 없는 시스템 앱, 삭제 방법 [8] |
|
3688 | 13 | 01-01 |
4256 | 소프트웨어| Wise care 365 사용시 주의점 [5] | heykevin | 2635 | 9 | 12-30 |
4255 | 윈 도 우| 포맷없이 , diskpart 작업 없이 기존 디스크에 EFI 파티션 ... [14] | heykevin | 3615 | 24 | 12-30 |
4254 | 윈 도 우| Chromium 기반 브라우저 OS 지원 종료 예정 알림 제거 자동... [8] | 녹색조각 | 1697 | 15 | 12-29 |
4253 | 윈 도 우| IP 주소 변경 배치(DSN/WINS) [20] | 무월 | 3881 | 30 | 12-28 |
4252 | 윈 도 우| Microsoft Update 카탈로그 (업데이트 항목 . 빨리 받아 적... [3] | heykevin | 1442 | 7 | 12-28 |
4251 | 하드웨어| ASROCK 메인보드에 관하여..... [5] | 밤이슬216 | 2756 | 5 | 12-25 |
4250 | 소프트웨어| 마우스 두개 양손 사용시 왼손 마우스 버튼 스왑 [7] | 지후빠 | 1316 | 13 | 12-24 |
4249 | 윈 도 우| 장치 드라이버 업데이트 파워쉘로 확인하기 [1] |
|
1600 | 7 | 12-22 |
4248 | 윈 도 우| Windows 10, 12월 보안 패치(KB5021233) 설치 후 뜨는 블루... [5] | 타천사둘리 | 2012 | 8 | 12-20 |
4247 | 윈 도 우| [실사] USB 테더링으로 PC 인터넷 랜 드라이버 설치하기! [8] | 무월 | 1838 | 15 | 12-20 |
4246 | 윈 도 우| 관리자보다 더쎈 권한으로, 접근제한 에러 뚫기 [20] |
|
4661 | 16 | 12-18 |
4245 | 윈 도 우| KB5018863 업데이트 제거하기(22621.1037로 버전 바꾸기) [5] | 타천사둘리 | 1631 | 5 | 12-16 |
4244 | 윈 도 우| 윈도우 호스트 만들기 - 몇가지 추가 [11] | 슈머슈마 | 1838 | 10 | 12-15 |
4243 | 윈 도 우| 윈도우 호스트에 온라인 광고차단 호스트 파일 추가, 기본 ... [14] | 슈머슈마 | 2182 | 14 | 12-13 |
4242 | 윈 도 우| BCD 백업 및 복구 프로그램 입니다 [11] | 지룡자 | 3200 | 25 | 12-10 |
꾸준한 연구의 경험을 이렇게도 함께 할 수 있도록 공유해 주시어 고맙습니다.
왜? 라는 자문에 의해 시작될듯한 것들까지 하나하나 배우고 익히다보면 언젠가는 쉬워질듯하네요.
새해 복 많이 받으세요~~