강좌 / 팁

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

2023.01.01 13:57

zerojiddu 조회:3517 추천: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 - - -
4481 소프트웨어| pureBasic - WIM 정보 v0993 - 내부 파일 추가 삭제 내보내... [40] 입니다 8665 160 12-22
4480 소프트웨어| 한글2024 로고 교체 / 자동 설치 옵션 [54] 무월 13153 107 11-25
4479 소프트웨어| [추가기능1.1]엑셀 셀의 행-열 Auto-Highlight 하는 방법들 [77] 지후빠 2813 103 11-10
4478 윈 도 우| PrincePE_V18.5 [164] %카리스마 204984 99 02-02
4477 윈 도 우| PE 한글화 프로그램 (v1.0) [106] ㄱㅇㄱㄱㅁ 28012 89 06-25
4476 윈 도 우| 윈도우 10 설치, 최적화 및 기타 팁 100개 정리 [56] 컴알못러 27748 79 01-26
4475 윈 도 우| PrincePE_V20 [52] %카리스마 2835 72 03-05
4474 윈 도 우| 배치파일을 이용해서 윈도우 자동 설치하기 [22] gooddew 4966 70 10-16
4473 윈 도 우| Windows 10 Ultimate (DREAM HS) [58] @카리스마 7353 70 08-14
4472 윈 도 우| WindowsXPE147-1빌더/나만의 PE를 만들자 시즌2 ?? 1탄 (... [59] 지연서연아 2054 69 04-16
4471 소프트웨어| iVentoy 만능윈도우(WIM) 자동 설치 [20] 무월 4252 66 07-08
4470 윈 도 우| PrincePE_V19 [53] %카리스마 5096 65 02-15
4469 윈 도 우| 윈도우 장치 드라이버 추출(백업) 명령어 [25] 컨피그 2714 64 02-23
4468 윈 도 우| 윈도우10 만능이미지 제작 메뉴얼 [43] 질주민군 5585 64 11-19
4467 소프트웨어| 트루이미지(Acronis True Image) 추가본②(본문 수정) [91] 고양이2 9118 62 11-26
4466 윈 도 우| 무인응답파일(autounattend.xml) 쉽게 만들기 [30] 네오이즘 3851 60 12-31
4465 서버 / IT| 손쉽게 멀티부팅용 USB 만들기. (내용추가) [50] 디폴트 7405 60 05-31
4464 윈 도 우| PrincePE_V22 [53] %카리스마 6602 59 03-06
4463 소프트웨어| ▣▣▣▣▣[ Ventoy 고급 응용편 자료 정리 ]▣▣▣▣▣ [31] 메인보드 7865 57 05-14
4462 소프트웨어| USB 로 UEFI 와 MBR 로 부팅 되도록 ISO 파일 설치하기 [42] 좋은이웃 7072 57 03-17
XE1.11.6 Layout1.4.8