강좌 / 팁

윈 도 우 삭제할수 없는 시스템 앱, 삭제 방법

2023.01.01 13:57

zerojiddu 조회:3688 추천:13

설정창 앱리스트엔 안나오고

문제는, 개인에 따라 불필요한게 많이 설치돼 있다는 것입니다.

밑의 내용들은

알아내면서 경험한 그대로를 적었습니다.

 

시스템 앱 확인은 파워쉘에서,

get-appxPackage -allusers | select PackageFullName,NonRemovable,SignatureKind,Status

 

NonRemovable True 라 표시된게 제거가 차단된 앱들입니다.

삭제할려면 무조건 에러가 뜨고, 그냥은 제거 불가능입니다.

Screenshot 2022-12-31 203028.png

 

이렇게 제거 안된다는 에러가 뜹니다.

윈도우에선 시스템 앱을 제거하는 기능자체가 없습니다.

Screenshot 2022-12-28 192143.png

 

제거 방법을 찾다 구글링대로 해보면,

제컴 윈11에선 먹히질 않고, 설명이 안된 에러들때문에 한참 헤맸습니다.

 

제거 방법 핵심은,

이폴더에 있는 C:\ProgramData\Microsoft\Windows\AppRepository

StateRepository-Machine.srd (윈도우 앱 데이터베이스 파일) 에 앱마다 저장된

IsInbox 1 값을 0 으로 바꾸면 되는데,

 

(편집하기전, 원래 StateRepository-Machine.srd 는 복사해 백업해 두는게 좋습니다.)

Screenshot 2022-12-30 190156.png

 

그냥은 편집이 불가능하기에,

첫째.

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이 다른 점이라 합니다. )

윈도우 모든권한과 상관없는 데이터베이스 자체 차단기능 에러로 추측합니다.

Screenshot 2022-12-30 190336.png

 

저 에러를 피하기 위해

Database Structure > Triggers 리스트중,

오른쪽 Schema 명령구문에서 "ON Pacakge" 라 써진 Triggers 리스트를 다 찾아내서,

 

Screenshot 2022-12-31 221110.png

 

윈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 리스트를 원상 복구하면 됩니다.

Screenshot 2022-12-30 194024.png

 

5개 Trigger 를 삭제한후,

Browse Data > Package로 들어가면 컴에 설치된

모든 앱들이 나오고

오른쪽에 "IsInbox" 값을 0 으로 바꾸면 됩니다.

Screenshot 2022-12-31 194425.png

 

이과정들을 일일히 클릭하지 않고,

.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;

 

그리고 이젠,

내가 원하는 시스템 앱을 삭제했습니다.

이건 관리자 권한으로 해도 됩니다.

Screenshot 2022-12-31 202222.png

 

2차로 또 다른 시스템 앱도 삭제해봤습니다.

엣지는 하나만 설치돼 있는게 아니고, EdgeDevTools, Edge Stable, Edge 구버전..

4개나 컴에 설치돼 있습니다.

저기 에러는 현재 사용중인 Edge Stable 삭제에러인데, 저건 시스템 앱이 아닙니다.

Screenshot 2023-01-01 100624.png

 

시스템 앱중 *OOBENetwork* 앱들은 관리자 권한에선 삭제가 안되길래,

NT Authority\System 권한으로 띄운 새창에서 해보니

문제없이 삭제가 됐습니다.

Screenshot 2023-01-01 112226.png

 

StateRepository-Machine.srd 앱 데이터베이스 파일 편집때,

이런 에러가 떳지만, 수정한 내용이 정상 반영됐다는 메세지도 같이 있어

무시하고 진행해도 정상적으로 시스텝 앱이 삭제 되었습니다.

Screenshot 2023-01-01 093534.png

 

지금 제컴에 남아있는 윈도우 앱들입니다.

Screenshot 2022-12-31 202417.png

 

 

 

 

번호 제목 글쓴이 조회 추천 등록일
[공지] 강좌 작성간 참고해주세요 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] zerojiddu 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] zerojiddu 1600 7 12-22
4248 윈 도 우| Windows 10, 12월 보안 패치(KB5021233) 설치 후 뜨는 블루... [5] 타천사둘리 2012 8 12-20
4247 윈 도 우| [실사] USB 테더링으로 PC 인터넷 랜 드라이버 설치하기! [8] 무월 1838 15 12-20
4246 윈 도 우| 관리자보다 더쎈 권한으로, 접근제한 에러 뚫기 [20] zerojiddu 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
XE1.11.6 Layout1.4.8