2、主要问题:除了任务栏、开始菜单、搜索、多标签资源管理器、控制面板等基本组件,其他系统自带组件无法使用,也无法安装uwp应用。
3、原因是0x80073cf6,0xd000001,大意是注册信息不能写入srd文件中。
4、目前发现22621.2066之前版本不稳定,有时外壳不能用。2066、2070的AppX服务比较好,即使不初始化也能用多标签资源管理器。
5、关键点:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v PathName /t REG_SZ /d "%Windir%" /f
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion" /v PathName /t REG_SZ /d "X:\Windows" /f
需要初始化com然后调用AppxSysPrep.dll,AppxSysprepSpecializeOnline,或者使用把C:\替换成X:\的srd文件(2066之后)
6、文件、文件夹、服务注册表管够,多多益善。为了用原生外壳,wim文件需要再大500m。
7、用wimbuilder本身会删除Appx需要的文件和注册表,自己制作的时候不要精简、也不要删文件。
8、调用AppxSysPrep的文件lnc,启动时SYSTEM下调用,新建其他管理员用户登录,Administrator在PE下无法使用高版本MSEdge,原因未知。
9、两个文件附件无法上传,自己编译制作吧,2066之后可只用srd文件放入X:\ProgramData\Microsoft\Windows\AppRepository\
lnc.cpp
#include [i]
#include "windows.h"
#include "tchar.h"
int main()
{
typedef void (WINAPI* APPXPREP)(void);
APPXPREP AppXprep;
//std::cout << "Hello World!\n";
HRESULT hrIni = CoInitializeEx(NULL, COINIT_MULTITHREADED);
HMODULE hm = LoadLibrary(_T("AppxSysPrep.dll"));
if (NULL != hm)
{
AppXprep = (APPXPREP)GetProcAddress(hm, "AppxSysprepSpecializeOnline");
if (NULL != AppXprep)
{
AppXprep();
}
FreeLibrary(hm);
}
if (hrIni == S_OK || hrIni == S_FALSE)
{
CoUninitialize();
}
std::cout << "HRESULT = "<< hrIni;
}