windows窗体应用中找回密码的程序_在Windows中使用msix应用容器来限制应用程序

以下内容不涉及任何专业知识,所有人都可以看懂。

此方法只适用于Windows10及更高版本

1.目的

1.1.防止应用程序在系统中产生垃圾

在容器中运行的程序不能写入实际用户注册表,不能写入AppData文件夹,这些写入操作都会被重定向,例如百度网盘会尝试写入:

C:UsersUserAppDataRoamingbaidu

C:UsersUserAppDataRoamingBaiduYunGuanjia

C:UsersUserAppDataRoamingBaiduYunKernel

C:UsersUserAppDataRoamingPLogs

实际会被转移到

C:UsersUserAppDataLocalPackagesUser.BaiduNetdisk_8wekyb3d8bbweLocalCacheRoamingbaidu

C:UsersUserAppDataLocalPackagesUser.BaiduNetdisk_8wekyb3d8bbweLocalCacheRoamingBaiduYunGuanjia

C:UsersUserAppDataLocalPackagesUser.BaiduNetdisk_8wekyb3d8bbweLocalCacheRoamingBaiduYunKernel

C:UsersUserAppDataLocalPackagesUser.BaiduNetdisk_8wekyb3d8bbweLocalCacheRoamingPLogs

不同的msix容器会转移到不同位置

注册表写入也会被转移。

1.2.流量统计显示更有规则

打开设置->网络和Internet->状态->数据使用量,可以看到不同应用程序使用的数据量,例如百度网盘包括了BaiduNetdisk.exe、BaiduNetdiskHost.exe、YunDetectService.exe等等,这样就会引起一个软件显示很多个数据,很混乱。通过这种方法可以让这些合并成一个,统一显示"百度网盘"。

2.注意事项

2.1.需要用7-Zip来获得百度网盘文件和图标(如果你有别的方法也行)

2.2.需要修改文件扩展名,如果你看不到扩展名,那么需要在这里选择"文件扩展名"

a0a1a5f2f452692d7711c4b84f1da927.png

2.3.这里假设用户名是"User",把百度网盘作为示例说明,用户名可用根据情况修改,其他软件方法一样

2.4.需要打开开发者模式,设置->更新和安全->开发者选项->开发者模式->开,版本不同可能界面会有些区别,只要打开开发者模式就行

25cd53fbcbfe4af4285ca6a2573d6cd6.png

3.开始配置

3.1.卸载清理百度网盘(如果已经安装)

3.1.1.卸载

3.1.2.删除文件

C:UsersUserAppDataRoamingbaidu

C:UsersUserAppDataRoamingBaiduYunGuanjia

C:UsersUserAppDataRoamingBaiduYunKernel

C:UsersUserAppDataRoamingPLogs

3.1.3.删除用户注册表项

打开注册表编辑器(按下Win+X->运行,输入"regedit"(不要引号),确定)

删除HKEY_CURRENT_USERSOFTWAREBaidu

3.2.获得百度网盘文件

3.2.1.从官网下载安装包,得到BaiduYunGuanjia_7.0.1.1.exe

3.2.2.右键->7-Zip->打开压缩包,然后点"提取",选择路径(例如"C:UsersUserMyAppxUser.BaiduNetdiskBaiduNetdisk"),然后确定。

3.3.从模板修改AppxManifest.xml

新建文本文档放到"C:UsersUserMyAppxUser.BaiduNetdisk",放入以下内容·,重命名为AppxManifest.xml

这是模板:

<?xml version="1.0" encoding="utf-8"?>
<Package xmlns=" http:// schemas.microsoft.com/a ppx/manifest/foundation/windows10 " xmlns:uap=" http:// schemas.microsoft.com/a ppx/manifest/uap/windows10 " xmlns:rescap=" http:// schemas.microsoft.com/a ppx/manifest/foundation/windows10/restrictedcapabilities " IgnorableNamespaces="uap rescap build" xmlns:build=" http:// schemas.microsoft.com/d eveloper/appx/2015/build ">
<Identity Name="User.Sample" Publisher="CN=User" Version="1.0.0.0" ProcessorArchitecture="x64" />
<Properties>
<DisplayName>Sample</DisplayName>
<PublisherDisplayName>User</PublisherDisplayName>
<Logo>AppxLogo.png</Logo>
</Properties>
<Dependencies>
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
</Dependencies>
<Resources>
<Resource Language="en-us" />
</Resources>
<Applications>
<Application Id="App" Executable="SampleAppSample.exe" EntryPoint="Windows.FullTrustApplication">
<uap:VisualElements DisplayName="Sample" Description="Sample" BackgroundColor="transparent" Square150x150Logo="AppxLogo.png" Square44x44Logo="AppxLogo.png">
</uap:VisualElements>
</Application>
</Applications>
<Capabilities>
<rescap:Capability Name="runFullTrust" />
</Capabilities>
</Package>

我们需要把它改成我们需要的(修改部分已经用加粗标出,括号中的内容是说明,不应该加到文件中)。

<?xml version="1.0" encoding="utf-8"?>
<Package xmlns=" http:// schemas.microsoft.com/a ppx/manifest/foundation/windows10 " xmlns:uap=" http:// schemas.microsoft.com/a ppx/manifest/uap/windows10 " xmlns:rescap=" http:// schemas.microsoft.com/a ppx/manifest/foundation/windows10/restrictedcapabilities " IgnorableNamespaces="uap rescap build" xmlns:build=" http:// schemas.microsoft.com/d eveloper/appx/2015/build ">
<Identity Name="User. BaiduNetdisk(应用程序包的ID可以根据情况更改)" Publisher="CN=Windowsist" Version="1.0.0.0" ProcessorArchitecture=" x86(因为百度网盘是32位的,所以需要改成"x86")" />
<Properties>
<DisplayName> 百度网盘显示名称(应用程序包名称)</DisplayName>
<PublisherDisplayName>User</PublisherDisplayName>
<Logo>AppxLogo.png</Logo>
</Properties>
<Dependencies>
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
</Dependencies>
<Resources>
<Resource Language="en-us" />
</Resources>
<Applications>
<Application Id="App" Executable=" BaiduNetdiskBaiduNetdisk.exe(可执行文件路径,主程序路径)" EntryPoint="Windows.FullTrustApplication">
<uap:VisualElements DisplayName=" 百度网盘显示名称(开始菜单名称)" Description=" 百度网盘说明" BackgroundColor="transparent" Square150x150Logo="AppxLogo.png" Square44x44Logo="AppxLogo.png">
</uap:VisualElements>
</Application>
</Applications>
<Capabilities>
<rescap:Capability Name="runFullTrust" />
</Capabilities>
</Package>

3.4.获得图标文件

右键BaiduNetdisk.exe,7-Zip->打开压缩包->*,打开".rsrc1033ICON",选择容量最大的(最清晰),这里选择"7.ico",选中后点"提取(减号按钮)",选择路径"C:UsersUserMyAppxUser.BaiduNetdisk",然后重命名为"AppxLogo.png"

3.5.安装

打开文件资源管理器,浏览到"C:UsersUserMyAppxUser.BaiduNetdisk",选择文件->打开Windows Power Shell

8bada1ac4a166148c8920d7f3f223935.png

输入"Add-AppxPackage -Register .AppxManifest.xml"(不要引号)

然后开始菜单就会出现"百度网盘"了,打开运行就可以,百度网盘已经在容器中运行了

4.常见问题

4.1.问题:一段时间后发现打不开了

原因:百度网盘自动更新后修改了文件权限,这个权限没有允许它在容器中运行

解决方法:选择文件"C:UsersUserMyAppxUser.BaiduNetdisk",右键->属性->安全->高级,勾选"使用可以从此对象继承的权限项目替换所有子对象的权限项目",选择"是",点"确定",然后就可以正常打开了。

4.2.如果你希望用msix的更多功能(例如提升权限,文件关联,增加服务等等),可以看官方的说明,这里有AppxManifest.xml的全部元素,而且在不断增加

元素层次结构 - Windows UWP applications​docs.microsoft.com

如果需要打包只读的应用程序包,可以用"MSIX Packaging Tool"(应用商店搜索就有)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值