Windows 10 пользователь не может выполнить файлы .exe точек повторной обработки AppExecLink - PullRequest
0 голосов
/ 26 февраля 2020

В моей установке Windows 10 возникают проблемы с запуском некоторых приложений, установленных через Microsoft Store, а также с запуском элемента панели управления nvidia, который отображается в меню при щелчке правой кнопкой мыши на рабочем столе. Когда вы выбираете приложение из меню «Пуск», используйте элемент меню правой кнопки мыши для панели управления nvidia или от go до C:\Users\user1\AppData\Local\Microsoft\WindowsApps и дважды щелкните там один из файлов .exe, вы получите такую ​​ошибку:

[Название окна]

C: \ Users \ user1 \ AppData \ Local \ Microsoft \ WindowsApps \ Microsoft.WinDbg_8wekyb3d8bbwe \ WinDbgX.exe

[Содержимое] Windows не может получить доступ к указанному устройству, пути или файлу. У вас могут не быть соответствующих разрешений для доступа к элементу.
[OK]

Между тем, переход к действительному файлу .exe в каталоге установки и двойной щелчок по нему работают. Это включает в себя исполняемый файл, вызываемый элементом меню nvidia, вызываемым правой кнопкой мыши.

Элементы, отличные от «WindowsApps» в меню «Пуск», работают нормально.

Я сузил это до некоторой степени невозможности run AppExecLink s (также известный как «точки повторной обработки» или «псевдонимы выполнения»). Я создал минимальный тестовый пример, используя WinDbg, установленный из Microsoft Store, и Set-ExecutionAlias из этого сообщения в блоге .

Ниже я перечислю некоторые файлы .exe. При просмотре с dir это файлы размером 0 КБ. Они похожи на жесткие ссылки, но они называются AppExecLink s. Они не являются настоящими исполняемыми файлами - они просто указывают, где находится финальный .exe и как его выполнить. Не удивляйся этому. Это не жесткие ссылки, или символические c ссылки, или файлы .lnk, или точки соединения. Они AppExecLink с. Упомянутый выше пост в блоге является хорошим введением в то, что такое псевдоним исполнения, также известный как AppExecLink.

Ниже вы можете увидеть, что простого изменения AppType с Desktop на UWP1 достаточно, чтобы исправить ошибка: приложение выполняется без ошибок, так же, как когда я дважды щелкаю файл .exe из его установочной папки. Однако Microsoft Store устанавливает программу с AppType, установленным на Desktop, что приводит к этому нарушенному поведению. Так что либо он не должен быть установлен на Desktop, и это то, что сломано, либо Desktop должно работать, и это то, что сломано.

Все файлы имеют одинаковый вывод в Get-Acl, так что это не не проблема в том, чтобы выполнить файл C:\Users\user1\AppData\Local\Microsoft\WindowsApps\Microsoft.WinDbg_8wekyb3d8bbwe\WinDbgX.exe и другие подобные ему.

Как мне исправить это поведение? Почему у меня нет разрешений на запуск типов приложений Desktop? Что может помешать этому пользователю выполнить AppExecLink s, на которые он влияет?


Вот выходные данные Get-ExecutionAlias (они все одинаковые, за исключением последнего изменения *) 1050 * от Desktop до UWP1):

Created by Microsoft Store, broken:
PS C:\users\user1\AppData\Local\Microsoft\WindowsApps\Microsoft.WinDbg_8wekyb3d8bbwe> Get-ExecutionAlias .\WinDbgX.exe


Version         : 3
PackageName     : Microsoft.WinDbg_8wekyb3d8bbwe
EntryPoint      : Microsoft.WinDbg_8wekyb3d8bbwe!Microsoft.WinDbg
Target          : C:\Program Files\WindowsApps\Microsoft.WinDbg_1.2001.2001.0_neutral__8wekyb3d8bbwe\DbgX.Shell.exe
AppType         : Desktop
Flags           : 48
Tag             : APPEXECLINK
IsMicrosoft     : True
IsNameSurrogate : False
IsTagDirectory  : False


Created by me, broken:
PS C:\users\user1\AppData\Local\Microsoft\WindowsApps\Microsoft.WinDbg_8wekyb3d8bbwe> Get-ExecutionAlias .\windbg5.exe


Version         : 3
PackageName     : Microsoft.WinDbg_8wekyb3d8bbwe
EntryPoint      : Microsoft.WinDbg_8wekyb3d8bbwe!Microsoft.WinDbg
Target          : C:\Program Files\WindowsApps\Microsoft.WinDbg_1.2001.2001.0_neutral__8wekyb3d8bbwe\DbgX.Shell.exe
AppType         : Desktop
Flags           : 48
Tag             : APPEXECLINK
IsMicrosoft     : True
IsNameSurrogate : False
IsTagDirectory  : False


Created by me, works:
PS C:\users\user1\AppData\Local\Microsoft\WindowsApps\Microsoft.WinDbg_8wekyb3d8bbwe> Get-ExecutionAlias .\windbg6.exe


Version         : 3
PackageName     : Microsoft.WinDbg_8wekyb3d8bbwe
EntryPoint      : Microsoft.WinDbg_8wekyb3d8bbwe!Microsoft.WinDbg
Target          : C:\Program Files\WindowsApps\Microsoft.WinDbg_1.2001.2001.0_neutral__8wekyb3d8bbwe\DbgX.Shell.exe
AppType         : UWP1
Flags           : 49
Tag             : APPEXECLINK
IsMicrosoft     : True
IsNameSurrogate : False
IsTagDirectory  : False

Get-Acl выходов для вашей проверки (они все одинаковые):

PS C:\users\user1\AppData\Local\Microsoft\WindowsApps\Microsoft.WinDbg_8wekyb3d8bbwe> Get-Acl .\WinDbgX.exe | fl


Path   : Microsoft.PowerShell.Core\FileSystem::C:\users\user1\AppData\Local\Microsoft\WindowsApps\Microsoft.WinDbg_8wekyb3d8bbwe\WinDbgX.exe
Owner  : BUILTIN\Administrators
Group  : GAMING\user1
Access : NT AUTHORITY\SYSTEM Allow  FullControl
         BUILTIN\Administrators Allow  FullControl
         GAMING\user1 Allow  FullControl
         GAMING\TempAdmin2 Allow  FullControl
Audit  :
Sddl   : O:BAG:S-1-5-21-1777315463-2770185252-2942861946-1001D:AI(A;ID;FA;;;SY)(A;ID;FA;;;BA)(A;ID;FA;;;S-1-5-21-1777315463-2770185252-2942861946-1001)(A;ID;FA;;;S-1-5-21-1777315463-2770185252-2942861946-1006)



PS C:\users\user1\AppData\Local\Microsoft\WindowsApps\Microsoft.WinDbg_8wekyb3d8bbwe> Get-Acl .\windbg5.exe | fl


Path   : Microsoft.PowerShell.Core\FileSystem::C:\users\user1\AppData\Local\Microsoft\WindowsApps\Microsoft.WinDbg_8wekyb3d8bbwe\windbg5.exe
Owner  : BUILTIN\Administrators
Group  : GAMING\user1
Access : NT AUTHORITY\SYSTEM Allow  FullControl
         BUILTIN\Administrators Allow  FullControl
         GAMING\user1 Allow  FullControl
         GAMING\TempAdmin2 Allow  FullControl
Audit  :
Sddl   : O:BAG:S-1-5-21-1777315463-2770185252-2942861946-1001D:AI(A;ID;FA;;;SY)(A;ID;FA;;;BA)(A;ID;FA;;;S-1-5-21-1777315463-2770185252-2942861946-1001)(A;ID;FA;;;S-1-5-21-1777315463-2770185252-2942861946-1006)



PS C:\users\user1\AppData\Local\Microsoft\WindowsApps\Microsoft.WinDbg_8wekyb3d8bbwe> Get-Acl .\windbg6.exe | fl


Path   : Microsoft.PowerShell.Core\FileSystem::C:\users\user1\AppData\Local\Microsoft\WindowsApps\Microsoft.WinDbg_8wekyb3d8bbwe\windbg6.exe
Owner  : BUILTIN\Administrators
Group  : GAMING\user1
Access : NT AUTHORITY\SYSTEM Allow  FullControl
         BUILTIN\Administrators Allow  FullControl
         GAMING\user1 Allow  FullControl
         GAMING\TempAdmin2 Allow  FullControl
Audit  :
Sddl   : O:BAG:S-1-5-21-1777315463-2770185252-2942861946-1001D:AI(A;ID;FA;;;SY)(A;ID;FA;;;BA)(A;ID;FA;;;S-1-5-21-1777315463-2770185252-2942861946-1001)(A;ID;FA;;;S-1-5-21-1777315463-2770185252-2942861946-1006)

1 Ответ

0 голосов
/ 27 февраля 2020

Вы можете попытаться восстановить вашу программу APPX. Откройте PowerShell от имени администратора и запустите строку ниже.

Get-AppxPackage -allusers | foreach {Add-AppxPackage -register "$($_.InstallLocation)\appxmanifest.xml" -DisableDevelopmentMode}
...