태그 보관물: windows-store-app

windows-store-app

PowerShell을 통해 Universal Apps를 제거 할 수 없음 못했습니다. 이 앱은

로드 블록에 도달했을 때 새 Windows 10 설치에서 모든 Universal Apps를 제거하는 과정에있었습니다.

내가 이것을 처음하는 것은 아니며 항상 잘 진행됩니다. 그러나 이번에는 PowerShell

Get-AppxPackage -allusers | Remove-AppxPackage

또는보다 구체적인 내용으로 쓸 때마다

Get-AppxPackage -allusers *windowscalculator* | Remove-AppxPackage

다음 메시지가 표시됩니다.

Remove-AppxPackage : HRESULT : 0x80073CFA로 배포하지 못했습니다. 제거하지 못했습니다. 소프트웨어 공급 업체에 문의하십시오. (HRESULT 예외 : 0x80073CFA) 오류 0x80070032 : AppX 배포 Microsoft.WindowsCalculator_10.1605.1582.0_x64__8wekyb3d8bbwe에서 C : \ Program Files \ WindowsApps \ Microsoft.WindowsCalculator_10.1605.1582.0_x64__8wekyb3d8bbwe 패키지에서 작업을 제거하지 못했습니다.

이 앱은 Windows의 일부이므로 사용자별로 제거 할 수 없습니다. 관리자는 Windows 기능 설정 또는 해제를 사용하여 컴퓨터에서 앱을 제거 할 수 있습니다. 그러나 앱을 제거하지 못할 수도 있습니다.

참고 : 자세한 내용은 이벤트 로그에서 [ActivityId] 75c5fc31-fb20-0001-77fd-c57520fbd101을 찾거나 명령 줄 Get-AppxLog -ActivityID 75c5fc31-fb20-0001-77fd-c57520fbd101을 사용하십시오.

줄 : 1 문자 : 49

+ Get-appxpackage -allusers *windowscalculator* | Remove-AppxPackage
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (Microsoft.Windo...__8wekyb3d8bbwe:String) [Remove-AppxPackage], IOException
+ FullyQualifiedErrorId : DeploymentError,Microsoft.Windows.Appx.PackageManager.Commands.RemoveAppxPackageCommand

내가 제거하려고 시도하는 모든 단일 응용 프로그램에 대해이 메시지가 나타납니다. 이전에는 결코 발생하지 않았던 계산기 또는 이미지 뷰어와 같이 완벽하게 제거 할 수 있습니다.
Powershell이 ​​실행 중이며 다른 모든 기능은 정상적으로 작동합니다.

Windows 재설치 외에 할 수있는 일이 있습니까?



답변

Windows 10 1 주년 업데이트부터 Microsoft 는받은 편지함 앱용 IsInboxSQLite 데이터베이스 C:\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Machine.srd에 새 항목 을 추가했습니다 . 로 표시된 앱 앱을 제거하려고 IsInbox하면 (으) 로 실패합니다 0x80073CFA.

그러나 2017 년 4 월발견 된 추악한 해결 방법이 있습니다.

ProcessHackerDBite for SQLite 도구를 다운로드하여 설치해야합니다 .

  • ProcessHacker 2를 관리자로 실행하고을 선택한 C:\Windows\System32\svchost.exe다음 마우스 오른쪽 버튼을 클릭하고 Misc->를 선택하십시오.Run as this user

여기에 이미지 설명을 입력하십시오

이제 여기를 선택 C:\Program Files\DB Browser for SQLite\DB Browser for SQLite.exe하고 시작하십시오. SQLite Browser에서Open database

여기에 이미지 설명을 입력하십시오

파일을 열 C:\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Machine.srd(그것을보고 모든 파일 열기 대화 상자에서 파일 형식을 변경).

이제 Browse Data탭을 클릭 하고 테이블을Package

여기에 이미지 설명을 입력하십시오

이제 제거하고 열의 하나를 변경하고자하는 응용 프로그램 선택 IsInbox에 대한 0변경 사항을 저장합니다.

여기에 이미지 설명을 입력하십시오

제거하려는 모든 앱에 대해이 작업을 반복하면 Powersehll 명령이 작동합니다.

그러나 필자는받은 편지함 앱이 제거되면 Microsoft가 최신 Windows 빌드로의 업그레이드를 차단한다고 썼습니다. 따라서 이것을 명심하십시오.


답변

시스템 앱의 클린
제거 (바이 패스 오류 0x80073CFA)
에는 다음 PowerShell 스크립트가 포함됩니다.

function Enable-Privilege {
  param($Privilege)
  $Definition = @'
using System;
using System.Runtime.InteropServices;
public class AdjPriv {
  [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
  internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall,
    ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr rele);
  [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
  internal static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok);
  [DllImport("advapi32.dll", SetLastError = true)]
  internal static extern bool LookupPrivilegeValue(string host, string name,
    ref long pluid);
  [StructLayout(LayoutKind.Sequential, Pack = 1)]
  internal struct TokPriv1Luid {
    public int Count;
    public long Luid;
    public int Attr;
  }
  internal const int SE_PRIVILEGE_ENABLED = 0x00000002;
  internal const int TOKEN_QUERY = 0x00000008;
  internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020;
  public static bool EnablePrivilege(long processHandle, string privilege) {
    bool retVal;
    TokPriv1Luid tp;
    IntPtr hproc = new IntPtr(processHandle);
    IntPtr htok = IntPtr.Zero;
    retVal = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,
      ref htok);
    tp.Count = 1;
    tp.Luid = 0;
    tp.Attr = SE_PRIVILEGE_ENABLED;
    retVal = LookupPrivilegeValue(null, privilege, ref tp.Luid);
    retVal = AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr.Zero,
      IntPtr.Zero);
    return retVal;
  }
}
'@
  $ProcessHandle = (Get-Process -id $pid).Handle
  $type = Add-Type $definition -PassThru
  $type[0]::EnablePrivilege($processHandle, $Privilege)
}

function Take-Over($path) {
  $owner = [Security.Principal.NTAccount]'Administrators'

  $key = [Microsoft.Win32.Registry]::LocalMachine.OpenSubKey($path, 'ReadWriteSubTree', 'TakeOwnership')
  $acl = $key.GetAccessControl()
  $acl.SetOwner($owner)
  $key.SetAccessControl($acl)

  $acl = $key.getaccesscontrol()
  $rule = New-Object System.Security.AccessControl.RegistryAccessRule "Administrators", "FullControl", "ContainerInherit", "None", "Allow"
  $acl.SetAccessRule($rule)
  $key.SetAccessControl($acl)
}

do {} until (Enable-Privilege SeTakeOwnershipPrivilege)

function Remove-Package($name) {
  $key = "SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages\$name"
  Take-Over $key
  Remove-Item -Path HKLM:"$key\Owners" -Force -Recurse
  & C:\Windows\System32\PkgMgr.exe /up:$name /norestart /quiet
}

#Remove Feedback
$packageBase = "Microsoft-WindowsFeedback"
$packageNames = (dir ("HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages\" + $packageBase + "*")).name

forEach ($package in $packageNames)
{
    Remove-Package $package.substring($package.indexOf($packageBase))
}

이 스크립트를 사용할 때 저자는 다음과 같이 말합니다.

$ packageBase를 다른 패키지 이름으로 변경할 수 있습니다.

나는이 스크립트를 직접 시도하지 않았다.


답변

Windows Anniversary 업데이트에서는 몇 가지 사항을 변경하여 cortana 또는 공식적인 방법으로 앱을 제거하는 등의 특정 기능을 해제 할 수 없습니다. xbox 앱 microsoft와 같은 일부 앱은 시스템에서 중요한 앱으로 간주하여이를 제거하는 공식적인 수단을 방해했습니다.

시작 메뉴로 이동하면 마우스 오른쪽 버튼으로 클릭하고 제거를 클릭 할 수 있습니다. 반대로 시작 단추를 마우스 오른쪽 단추로 클릭하고 설정으로 이동 한 다음 앱 및 기능에서 제거 할 수 있습니다.

이제 이러한 앱 제거를 원치 않는 경우. 그것들은 보관되어 있으므로 보관 된 C:\windows\SystemApps폴더를 찾고 폴더를 제거하거나 더 안전한 옵션은 이름을 바꾸고 밑줄과 같은 문자를 _이름 끝에 추가하는 것 입니다.

추가하기 만하면 폴더를 제거하거나 systemapps 폴더 내에서 이름을 바꾸면 기술적으로 폴더를 삭제하는 것이 아니라 레지스트리 키 및 기타 파일과 같은 다른 파일을 여전히 설치할 수있는 폴더를 삭제 한 경우 강제로 제거하는 것입니다 systemapps 폴더에 있지만 폴더 이름을 바꾸지 않으면 강제로 실행되지 않습니다.

Ryakna가 아래 의견에서 언급했듯이 이러한 옵션 중 하나를 사용하면 나중에 문제가 발생할 수 있지만 내 경험으로는 아직 업데이트를 포함하여 문제가 발생하지 않았습니다. 그러나 친숙한 경우 powershell을 사용하거나 프로그램 및 기능 옵션 또는 메뉴 옵션을 통해 공식적인 방법으로 제거하는 것이 좋습니다. SystemApps폴더의 이름을 변경하거나 삭제할 수 없습니다해야이 작업을 수행하는 것처럼, 당신은 당신이 이름을 바꾸거나 systemapps 폴더 안에 폴더를 제거한다면보다 가능성이 가장 높은 발생 문제.


답변