slore 发表于 2019-10-5 01:51:46

高版本Win10PE多用户切换

本帖最后由 slore 于 2019-10-10 02:23 编辑

正常Windows无法启动至SYSTEM用户桌面,不存在一个叫“SYSTEM”的用户。
通常正常系统下可以在不同用户间切换,且保持所有用户已运行的程序不中断。



但是PE默认是进入SYSTEM用户“桌面”环境,没有其他用户。
通过补充注册表服务,dll文件的方式,可以在PE下启用多用户登录环境,
就可以使用Administrator,GUEST(PE下通常不用),其他用户(PE下通常不用)进行登录。

在Administrator,GUEST,其他自建用户间是可以和正常系统一样进行互相切换的。
但是无法切换到默认的SYSTEM用户环境。(早期WIN10版本的PE也可以的,忘了从什么版本开始不能了)

根据一个朋友的调查,明白了为什么在新版本无法切换的原因,并通过调试系统服务,
强制更改SYSTEM用户“登录状态”,使系统认为和通常用户一样可以切换,
从而实现Administrator用户切换到SYSTEM。

根据这个调查结果,我确认了到目前已知的20H1内测版本,确实通过该方法
都可以切换至SYSTEM用户环境。


登录SYSTEM=>启动外壳,完成桌面等快捷方式初始化
再登录Administrator=>启动外壳,完成桌面等快捷方式初始化

不依赖于任何PE启动管理器,都可以。
大家知道的,注册表的Winlogon项目下面的 userinit可以设置用户登录时调用脚本控制初始化。


但是如果直接启动登录Administrator=>启动外壳,完成桌面等快捷方式初始化
在回到SYSTEM用户,让其启动外壳,完成桌面等快捷方式初始化的话,
就是需要PE启动管理器来感知用户切换的时机,来响应初始化SYSTEM用户环境。

基于10.0.18990 x64构建PE动态图(Gif)演示:




上图效果,使用WimBuilder2_2019.10.10更新版(启动管理器选择LUA,账户管理中启用Admin用户),
即可自己构建随意切换用户的PE。下载地址:
forum.php?mod=redirect&goto=findpost&ptid=411399&pid=3871787&fromuid=166812

github下载:
https://github.com/slorelee/wimb ... -Full.2019-10-10.7z

网盘下载(WimBuilder2-Full.2019-10-10.7z 18MB):
链接:https://pan.baidu.com/s/1SlGSJPk4RV-GJQco8o3lZA
提取码:elvb

WimBuilder2_2019.10.10版本支持所有RS5以上版本(x86, x64) PE的用户切换。

启动管理器使用PE默认的startnet.cmd也可以进行管理员登录,SYSTEM用户随意切换的脚本见#2代码:

10月底公开,
扫描二维码支持WinXShell,WimBuilder2项目,捐赠10元以上者,发送 捐赠id信息 站内消息,提前获取#2代码。

PECMD脚本不熟,没有针对PECMD启动管理器的脚本,不过参照startnet.cmd批处理,应该很容易。


不依赖任何启动管理器,仅使用系统自带命令,也可以进行切换,
不增加文件注册表,不增加wim体积的方法也有:
12月底公开原理,代码,
扫描二维码支持WinXShell,WimBuilder2项目,捐赠50元以上者,发送 捐赠id信息 站内消息,提前获取#3原理,代码。


支付宝


微信

slore 发表于 2019-10-5 01:52:32

本帖最后由 slore 于 2019-10-31 20:07 编辑

月底已至,密码移出。


启动管理器使用PE默认的startnet.cmd也可以进行管理员登录,SYSTEM用户随意切换的脚本如下:

@echo off

rem hide this console window
if exist "%ProgramFiles%\WinXShell\WinXShell.exe" (
title PE_STARTNET_WINDOW
"%ProgramFiles%\WinXShell\WinXShell.exe" -luacode "HideWindow('ConsoleWindowClass', 'PE_STARTNET_WINDOW')"
)

if "x%~1"=="x" call :OSInit
call :UserLogon "%~1"
call :PreShell "%~1"
call :RunShell
call :PostShell

if not "x%USERNAME%"=="xSYSTEM" goto :EOF
echo SYSTEM account inited
cmd.exe

goto :EOF

:OSInit
echo "%~nx0" > "X:\Windows\Temp\SYSTEM_LOADER"
wpeinit.exe
call "X:\PEMaterial\Autoruns\Runner.bat" OSInit
goto :EOF

:PreShell
if "x%~1"=="x" set USERPROFILE=X:\Users\Default
set Desktop=%USERPROFILE%\Desktop
set "Programs=%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs"

if exist %SystemRoot%\System32\IME_Cmd.cmd (
    call %SystemRoot%\System32\IME_Cmd.cmd
)

call "X:\PEMaterial\Autoruns\Runner.bat" Startup\BeforeShell
goto :EOF

:RunShell
if exist "%windir%\explorer.exe" (
    if "x%USERNAME%"=="xSYSTEM" start explorer.exe
    if exist "%ProgramFiles%\WinXShell\WinXShell.exe" (
      start "wxsDaemon" "%ProgramFiles%\WinXShell\WinXShell.exe" -regist -daemon
    )
) else (
    if exist "%ProgramFiles%\WinXShell\WinXShell.exe" (
      if "x%USERNAME%"=="xSYSTEM" (
            start "WinXShell" "%ProgramFiles%\WinXShell\WinXShell.exe" -regist -winpe
      )
    )
)
goto :EOF

:PostShell
if "x%USERNAME%"=="xSYSTEM" echo SYSTEM > "X:\Windows\Temp\SYSTEM_UserInited"
call "X:\PEMaterial\Autoruns\Runner.bat" Startup
goto :EOF

:UserLogon
if "x%~1"=="x-init" goto :EOF
if not exist "%WinDir%\System32\LogonAdmin.bat" goto :EOF
if not exist "%ProgramFiles%\WinXShell\WinXShell.exe" goto :EOF

if "x%~1"=="x-user" goto :END_UI_LOGON

rem 1 - SYSTEM, 2 - ADMIN
start "wxsUI_Logon" /wait "%ProgramFiles%\WinXShell\WinXShell.exe" -ui -jcfg "X:\PEMaterial\UI_LogonPE.jcfg"
echo set Logon_User=ADMIN
if not "x%errorlevel%"=="x2" (
echo set Logon_User=SYSTEM
goto :EOF
)

:END_UI_LOGON
call LogonAdmin.bat
echo rem Waiting until ADMIN => SYSTEM
if exist "X:\Windows\Temp\SYSTEM_UserInited" goto :EOF
echo rem Waiting until ADMIN => SYSTEM
start "WaitForSession_SYSTEM" /wait "%ProgramFiles%\WinXShell\WinXShell.exe" -luacode WaitForSession('SYSTEM')
echo rem Detect ADMIN => SYSTEM session changing, init for SYSTEM account


PECMD脚本不熟,没有针对PECMD启动管理器的脚本,不过参照startnet.cmd批处理,应该很容易。




slore 发表于 2019-10-5 01:53:36

本帖最后由 slore 于 2019-12-31 20:37 编辑


月底已至,密码移出。
Z:\Dev\WimBuilder2\Projects\WIN10XPE\00-Configures\x-Account\last.bat
if not "x%opt%"=="xtrue" goto :EOF

rem patch for 20H1 x64
binmay.exe -u "%X_SYS%\lsm.dll" -s "E8 87 CA FC FF" -r "B8 01 00 00 00"
fc /b "%X_SYS%\lsm.dll.org" "%X_SYS%\lsm.dll"
del /q "%X_SYS%\lsm.dll.org"

黑中见白 发表于 2019-10-5 05:00:52

卧槽,这样岂不是可以不依靠pe组件了

zlq_hysy 发表于 2019-10-5 08:42:35

佩服,研究的很深刻

995070995 发表于 2019-10-5 09:22:55

强大的技术贴!

Liberation 发表于 2019-10-5 11:15:26

https://github.com/slorelee/wimbuilder2/releases/download/v2019.10.05_beta/WimBuilder2-Full.7z
下载没速度,下一会儿就失败了,不知道什么原因?

koko4u 发表于 2019-10-5 11:22:38



在管理员登录屏幕上
该域不存在或无法访问。
有什么解决办法?

liuzhaoyzz 发表于 2019-10-5 12:33:13

本帖最后由 liuzhaoyzz 于 2019-10-5 12:56 编辑

提高github下载速度的方法【100%有效】可达到2MB
https://blog.csdn.net/kcx64/article/details/83866633
因为大家都知道的原因,在国内从github上面下载代码的速度峰值通常都是20kB/s。这种速度对于那些小项目还好,而对于大一些的并且带有很多子模块的项目来讲就跟耽误时间。而常见的的方法无非就是修改HOST或者挂VPN,实际用起来并不稳定。
这里提供一种新的方法,下载速度可以达到 1~2MB/s

1. 利用开源中国提供的代码仓库
标题已经说的很清楚了,我想对于经常使用git的人来讲,很可能已经知道了。对于新手刚接触git的人来讲,可能你只知道github。
实际上,国内也有很多代码仓库提供方,国外也不只github。只不过国内也是刚刚开始,关注的人不多。
开源中国提供的代码仓库提供了一个功能,就是它可以将github账号中的代码 clone 到开源中国的账户中去。这个代码仓库叫做 码云 ,没错就是码云??。
要求你有一个github账户,一个码云gitee账户。
步骤很简单

将github上面你想要搞下来的项目首先 frok 到你自己的github的账户中去。耗时:一瞬间
登录gitee,没有的自行注册。网页中有添加项目的按钮,一个加号。点击加号,下拉列表里面有 迁移github项目 的选项,点开后按照提示关联自己的github账号,之后选择你要迁移的项目,按提示操作。耗时:不到三分钟。
按照 clone github项目方法, clone 迁移到gitee账户中的项目。区别是 clone 链接换成了目标项目在gitee中的链接。通常下载速度是以MB/s为单位的。
按照上面的方法,基本上不再需要整夜挂机 clone 代码了。

我今天也花了一上午的时间下载20191005full版本,用的就是上面的方法。
从github上面fork,然后从github克隆到gitee,找到方法了,几分钟就搞定了,下载地址我分享出来:
https://gitee.com/liuzhaoyzz/wimbuilder2/releases
我感觉在国内,gitee要比github有太多的优势,源代码的上传下载完全可以用gitforwindows的GUI版本,我试了上传下载很快。
1、gitforwindows:http://npm.taobao.org/mirrors/git-for-windows/
2、Git GUI可视化操作教程:https://www.cnblogs.com/zhoumiao/p/8018249.html

slore大神在一楼分享的20191005full版本,建议把vender打包进去,毕竟这是release版本啊。
我用这版本构建测试了下,1、SwitchUser还是不能从admin切换到system啊?用的还是这个cn_windows_10_enterprise_ltsc_2019_x64_dvd_9c09ff24.iso
2、构建出来的ISO体积比上个版本大概大了8MB,我不知道是不是SwitchUser文件增加的原因,还是其他原因?还没有深入研究对比。
boot.wim\sources这个目录倒底有无用处?对于LTSB删除这个会提示出错,LTSC我删除了也没有影响。

      

slore 发表于 2019-10-5 12:48:26

本帖最后由 slore 于 2019-10-5 12:54 编辑

liuzhaoyzz 发表于 2019-10-5 12:33
提高github下载速度的方法【100%有效】可达到2MB
https://blog.csdn.net/kcx64/article/details/83866633
...

Full就是带vendor的打包版本(用户切换必须用最新版的WinXShell),18MB。

放假前只处理了, Windows 10 RS4~20H1 x64的ISO用户切换。
你这个ISO估计不行。假期结束了,会去补充x86版本,随便把你这个版本看下,理论上Win10任意版本都可以,但是我只测试了RS5,19H1,20H1。

source是微软原版winre.wim启动时运行的系统安装,维护程序,可以删除才对。

早期版本,我不太清楚。

liuzhaoyzz 发表于 2019-10-5 12:54:22

本帖最后由 liuzhaoyzz 于 2019-10-5 12:57 编辑

哦,我搞错了,githee克隆得来的似乎只有master主分支的源代码,没有release版本,显示的是发行版,结果不是,我下载的其实是master版本的源代码,我自己放了vender进去,应该是跟20191005full版本一样的了。

哦,ISO是这个cn_windows_10_enterprise_ltsc_2019_x64_dvd_9c09ff24.iso,粘贴错了。      

liuzhaoyzz 发表于 2019-10-5 13:00:14

今天我在家下载20191005full版本最快只有250KB/S的样子,到了后面就断了,似乎github不支持断点续传,所以我想到了gitee克隆的办法,结果release没有克隆下来。      

slore 发表于 2019-10-5 13:04:51

liuzhaoyzz 发表于 2019-10-5 13:00
今天我在家下载20191005full版本最快只有250KB/S的样子,到了后面就断了,似乎github不支持断点续传,所以 ...

vendor都是exe没有提交到代码库上,方便master更新,release是单独发布自己的打包版本,里面还有精简字体等。

没有被管理的文件,是克隆不了的。
电脑没电,晚上回去,补下论坛附件包。

liuzhaoyzz 发表于 2019-10-5 13:08:14

没有被管理的文件,是克隆不了的。       确实是这个样子。

slore大神辛苦了!原创技术分析和解决方案!

liuzhaoyzz 发表于 2019-10-6 10:23:12

本帖最后由 liuzhaoyzz 于 2019-10-6 10:26 编辑

其实我也是在想该在哪里回复。因为20191005是在这个帖子发布的,所以就顺便回复了。
关于SwitchUser,我试了cn_windows_10_enterprise_ltsc_2019_x64_dvd_9c09ff24.iso构建的PE下都正常,来回切换,只是winxshell等进程,默认是admin登录的,切换到system之后,似乎还是admin登录的,是不是正常的?
      

slore 发表于 2019-10-6 10:32:09

liuzhaoyzz 发表于 2019-10-6 10:23
其实我也是在想该在哪里回复。因为20191005是在这个帖子发布的,所以就顺便回复了。
关于SwitchUser,我试 ...

你滚动条往下,应该可以看到SYSTEM也应该有。
多个用户是各自的进程,互不影响,与正常系统一样。
SYSTEM是比Admin应该多一个进程,就是PE的启动管理器。

liuzhaoyzz 发表于 2019-10-6 10:36:55

本帖最后由 liuzhaoyzz 于 2019-10-6 10:48 编辑

slore 发表于 2019-10-6 10:32
你滚动条往下,应该可以看到SYSTEM也应该有。
多个用户是各自的进程,互不影响,与正常系统一样。
SY ...

确实如你所说,往下滚的话可以看到winxshell有admin和system身份登录的进程。      

tnt543210 发表于 2019-10-6 17:30:43

Full就是带vendor的打包版本(用户切换必须用最新版的WinXShell),18MB。

xhan 发表于 2020-10-16 18:35:15

学习学习

SYSTEM-RAMOS 发表于 2020-11-12 10:50:05

我制作的win10PE在登录admin的时候不显示“请稍候”,因为开机直接运行admin登录,导致会在开机后先黑屏5秒钟,再显示登录界面,让强迫症看着很难受。测试了,不是缺失文件的问题,应该是注册表的问题。

SYSTEM-RAMOS 发表于 2020-11-13 11:05:22

这个PE可以给一个下载地址吗?wim,iso都可以。想研究一下他的登录过程

23456 发表于 2020-11-14 16:52:26

WimBuilder2-Full.v2020-10-10   制作的全能PE   1607滚动条后黑屏20h2版滚动条直接重启

23456 发表于 2020-11-14 16:58:08

23456 发表于 2020-11-14 16:52
WimBuilder2-Full.v2020-10-10   制作的全能PE   1607滚动条后黑屏20h2版滚动条直接重启

感谢大神的回复   马上测试下

ylhcq 发表于 2023-3-6 10:11:26

6

CYYspace 发表于 2023-4-29 14:40:17

SYSTEM-RAMOS 发表于 2020-11-13 11:05
这个PE可以给一个下载地址吗?wim,iso都可以。想研究一下他的登录过程

ZDY,你的Win11PE是怎么实现默认进Admin账户和加安全选项的?

CYYspace 发表于 2023-5-3 08:33:41

有没有Pe加锁定,注销,安全选项的方法?

slore 发表于 2023-5-3 11:22:51

CYYspace 发表于 2023-5-3 08:33
有没有Pe加锁定,注销,安全选项的方法?

注销,锁定正常的吧,不过点击了,没system选,所以注册表禁用了。

SYSTEM-RAMOS 发表于 2023-5-6 18:10:50

CYYspace 发表于 2023-4-29 14:40
ZDY,你的Win11PE是怎么实现默认进Admin账户和加安全选项的?

参考:
http://wuyou.net/forum.php?mod=viewthread&tid=388510

CYYspace 发表于 2023-5-12 21:32:21

SYSTEM-RAMOS 发表于 2023-5-6 18:10
参考:
http://wuyou.net/forum.php?mod=viewthread&tid=388510

谢谢{:1_191:}ZDY真是我的偶像!

CYYspace 发表于 2023-5-28 15:48:14

SYSTEM-RAMOS 发表于 2023-5-6 18:10
参考:
http://wuyou.net/forum.php?mod=viewthread&tid=388510

请问如何解决PE Admin账户的安全选项点击“任务管理器”没反应?
页: [1] 2
查看完整版本: 高版本Win10PE多用户切换