我的Win32应用程序需要安装Windows资源管理器Shell扩展 .
我已经使用Desktop App Converter为我的应用程序生成AppX . 但转换器忽略了应用程序的旧版安装程序安装的shell扩展 .
当它将 Classes\Directory\shellex
键捕获到 Registry.dat
时,键条目指向未捕获的CLSID . 即使它确实捕获了引用的CLSID,它也指向一个路径,其中旧版安装程序安装应用程序,而不是安装AppX的真实位置 .
我正在考虑在第一次运行时通过应用程序本身注册扩展 . 但是 C:\Program Files\WindowsApps
中的安装位置具有受限制的权限,因此 regsvr32
失败 .
模块“C:\ Program Files \ WindowsApps \ WinSCP_5.14.0.0_x86__2dz6xbp7ps3z2 \ DragExt64.dll”无法加载 . 确保二进制文件存储在指定的路径中或调试它以检查二进制文件或从属.DLL文件的问题 . 访问被拒绝 .
权限允许将文件复制到其他位置 . 所以我可以将.dll复制到例如用户配置文件( C:\Users\...
)并从那里注册 . 但是当卸载AppX时,这将使.dll落后 .
有没有更好的解决方案?
1 回答
Windows 10(桌面桥应用程序)上打包的Win32应用程序的设计原则是它们通过appxmanifest(而不是通过注册表)以声明方式与Shell集成 . 为方便起见,我们在清单方案中添加了Shell扩展 . 系统将使用Shell运行那些扩展程序(与经典的进程内扩展不同),以允许无缝的应用程序更新并防止应用程序崩溃Windows Shell / Explorer .
请参阅此处获取文档:https://docs.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-extensions
EDIT 请注意,今天并非所有现有的Shell扩展都受支持 . 为了帮助我们确定任何仍然缺失的优先顺序,请在UserVoice上记录它们:https://wpdev.uservoice.com/forums/110705-universal-windows-platform