강좌 / 팁

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

2023.01.01 13:57

zerojiddu 조회:3525 추천: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 - - -
4310 윈 도 우| PE 네트워크 설정하는 방법 2편입니다. [4] PC_Clinic 1119 11 02-12
4309 윈 도 우| Windows 11에서 Android를 웹캠으로 사용하는 방법 VᴇɴᴜꜱGɪ 1123 6 03-16
4308 소프트웨어| S3. 번역기-Firefox+Google Chrome용 부가 기능: 한국어 지원 [2] VₑₙᵤₛG 1125 6 11-24
4307 윈 도 우| WinRE.wim에 툴 메뉴 등록하는 리커버리에 대한 파티션 설... [3] 복원솔루션 1128 7 07-03
4306 소프트웨어| NIUBI Partition Editor에 배드(불량) 섹터 검사 기능이 있... [2] 그루터기 1133 7 06-18
4305 소프트웨어| [포토샵] 인물 아웃포커싱 [5] 무월 1134 17 04-03
4304 윈 도 우| 공백으로 시작하는 파일/폴더가 복사시에 문제 [2] ton3d 1137 1 03-15
4303 소프트웨어| True Image 실행 시 삭제한 백업 폴더가 다시 생성되는 문... [1] 봄빛깔 1137 8 08-21
4302 모 바 일| *카톡 화면켑처 - 카카오톡 대화를 화면켑처(Screenshot)하... murimgasa 1142 0 08-13
4301 모 바 일| 모바일 동영상 제작 앱 강자 키네마스터 강좌 2강 올립니다... [2] murimgasa 1142 1 08-13
4300 기 타| Forecastfox (기상 정보) - Firefox 및 Chrome 용 부가 기능 [2] VenusGirl 1143 5 05-23
4299 모 바 일| 스마트폰 카메라를 나에게 맞게 환경을 설정해서 멋진 사진... murimgasa 1148 0 08-13
4298 윈 도 우| 윈빌더로 빌드시 빌드 부분 확인 하세요. [2] 오늘을사는 1150 6 10-27
4297 모 바 일| *카카오톡 단체톡 관리 방법 - 톡에서 나가지 않고 모든 톡... [1] murimgasa 1151 1 08-13
4296 소프트웨어| ACDsee 로 이미지파일 빨리 분류하는 법 [1] ton3d 1152 4 04-06
4295 윈 도 우| 지후빠님 UAC 회피기동 [1] 슈머슈마 1157 10 04-06
4294 기 타| 나스 토런트 감시폴더에 Torrent 파일 자동 전송 (수정) [1] 슈머슈마 1161 9 08-11
4293 기 타| 한 드라이브에 윈도우(Atlas OS)까지 2개 설치하는 법(?) (... 누군가 1161 0 02-04
4292 소프트웨어| 오토핫키 스크립트 내에 바이너리 포함시키기 [9] 지후빠 1163 7 01-07
4291 모 바 일| 모바일 파워디렉터에서 음성 녹음 방법 강좌입니다. Mobi... murimgasa 1164 2 10-03
XE1.11.6 Layout1.4.8