我使用 Shell Launcher V2 設定自訂應用程式(win32,而不是 UWP),以在執行 Windows 11 Enterprise 的電腦上作為 shell 運行。這工作正常,但我需要從 shell 應用程式啟動另一個 win32 應用程式。通常,我使用 shell:AppsFolder 來取得其他應用程式的 AUMID 並啟動它。
問題是shell:AppsFolder 僅在使用自訂shell 時顯示UWP 應用程序,而正常運行時(即使用普通的資源管理器shell),我會在shell:AppsFolder 中取得所有已安裝的程式(UWP 或其他) 。
如何配置 Shell Launcher V2,以便在使用自訂 shell 運行時獲取所有已安裝的應用程序,而不僅僅是 UWP 應用程式?
編輯:在對 shell 進行了更多的嘗試之後,我得到了它的更新。我嘗試過的事情包括運行 Windows 更新疑難排解、Windows 應用程式商店疑難排解,我修復並重設了應用程式商店應用程式並新增了 Microsoft 帳戶。
不確定是哪一個操作導致的,但現在 shell:AppsFolder 顯示所有應用程式。但是,安裝應用程式或刪除應用程式(無論是 UWP 應用程式還是 win32 應用程式),shell:AppsFolder 不會做出反應。
我還嘗試了其他方法,看看是否可以透過其他方式取得 AUMID,我發現在 Powershell 中運行Get-StartApps
或Get-AppxPackage
在Powershell 中也不會列出新安裝的應用程式、UWP 或其他應用程序,而在使用資源管理器作為shell 運行時,它們會列出。
就好像使用自訂 shell 時 Windows 根本不知道應用程式安裝/刪除一樣。是否有某個服務或某個未運行的東西可以在安裝/刪除應用程式時通知 Windows?
答案1
嘗試其中的一些 - 我不確定當 shell 沒有真正運行時所有內容都會更新:
# List the package class names for the user from the registry
# these should be closest to the actual packages list, but don't have ID as a property
$ActivatableClasses = (Get-ChildItem 'HKCU:\Software\Classes\ActivatableClasses\Package\').PSChildName
# this should get all the actual AppX AUMIDs
$AppxClasses = (Get-ItemProperty 'HKCU:\SOFTWARE\Classes\AppX*\Application').AppUserModelID
# starts a new shell com instance and asks it for the appx ID list - likely the same result as shell:AppsFolder
$ApplicationIDs = (New-Object -ComObject Shell.Application).NameSpace('shell:::{4234d49b-0245-4df3-b780-3893943456e1}').Items() | % path
# more of a .net-specific way to do Get-AppxPackage
$packages = [Windows.Management.Deployment.PackageManager]::new().FindPackagesForUser("")