无忧启动论坛

标题: 系统自带的 wscript.exe 也可以接管 winpeshl.exe [打印本页]

作者: 兰中闲人    时间: 2024-8-18 20:13
标题: 系统自带的 wscript.exe 也可以接管 winpeshl.exe
本帖最后由 兰中闲人 于 2024-8-26 21:46 编辑



一、方法

1、需要支持 wscript.exe 的文件,用微软工具套件中的 Procmon 很容易得到。

2、注册表 SYSTEM\SETUP 下 CMDLINE 的值改为 X:\windows\system32\wscript.exe X:\windows\system32\peset.vbs

3、删除 winpeshl.exe、winpeshl.ini 、startnet.cmd 三个文件。

二、两个启动文件

1、复制下面代码保存为 peset.vbs 文件(原采用 hta 文件,遵从 slore 大师高见,改用 js 文件。在此向 slore 大师表示深深谢意!因 js 代码难搞,又改用 vbs 文件。)。

=====
set Objectwsh = CreateObject("WScript.Shell")
Objectwsh.Run "wpeinit.exe"Objectwsh.Run "explorer.exe"
Objectwsh.Run "peset.cmd",0

‘     注:此外可添加多个可执行文件和脚本。
set Objectwsh = nothing
Do While True
    WScript.Sleep 1800000
Loop
=====

2、复制下面代码保存为 peset.cmd 文件,放在 windows\system32 文件夹
注:其中代码只是示例,可以随便改写。

=====
rem        修改 SystemSetupInProgress 值。
reg add "HKLM\SYSTEM\Setup" /v SystemSetupInProgress /t REG_DWORD /d 0 /f >nul 2>nul
rem        网络指示器 …… ……
net start netprofm >nul 2>nul
rem        启动输入法
start %windir%\system32\ctfmon.exe >nul 2>nul
…… ……
rem        修改 SystemSetupInProgress 值。
reg add "HKLM\SYSTEM\Setup" /v SystemSetupInProgress /t REG_DWORD /d 1 /f >nul 2>nul
exit
=====










作者: JBT-RAMOS    时间: 2024-8-18 20:28
好!
作者: wn168cn@163.com    时间: 2024-8-18 21:14
感谢分享
作者: likeyouli    时间: 2024-8-18 21:29
没看明白,pe启动不是本来就很简单吗 ?  wim格式的pe,随意放到硬盘上,用个boot.sdi文件,bootice引导一下,就能启动啊;iso格式的pe,用grubfm引导就行。
       您这不是太麻烦了吗... 还有mshta是啥,我的win11,开始运行里输入mshta,即不报错也没任何提示,cmd下输入mshta,也是即不报错也没反应。
作者: yc2428    时间: 2024-8-18 23:30
感谢分享
作者: ootd123123    时间: 2024-8-19 12:51
谢谢楼主!
作者: fxssj    时间: 2024-8-19 17:08
好好学习下
作者: slore    时间: 2024-8-19 21:42
只是为了隐藏运行,用wscript.exe执行js或者vbs脚本启动cmd文件,比mshta.exe依赖少,网页组件不需要。
作者: 兰中闲人    时间: 2024-8-19 23:42
slore 发表于 2024-8-19 21:42
只是为了隐藏运行,用wscript.exe执行js或者vbs脚本启动cmd文件,比mshta.exe依赖少,网页组件不需要。

高人是一语中的!

求教一下,用wscript.exe执行js或者vbs脚本隐藏启动cmd文件,在 winpeshl.ini 文件中怎么写?谢谢。

因自己用 hta 编写了开始菜单和几个将命令行图形化的小工具,才加了网页组件。
作者: slore    时间: 2024-8-20 00:51
基本思路就是把hta中的脚本部分保存成脚本文件,直接用wscript.exe调用。
没测试,也许需要适当的修改下。

peset.js
  1. function openFile(x,y) {
  2.         var obj=new ActiveXObject("wscript.shell");
  3.         obj.Run(x,y,false);
  4.         obj=null;
  5. }
  6. openFile("explorer.exe",1);
  7. openFile("peset.cmd",0);
复制代码


winpeshl.ini 文件
  1. [LaunchApps]
  2. X:\windows\system32\wscript.exe /E:jscript X:\windows\system32\peset.js
复制代码



作者: 兰中闲人    时间: 2024-8-20 01:01
slore 发表于 2024-8-20 00:51
基本思路就是把hta中的脚本部分保存成脚本文件,直接用wscript.exe调用。
没测试,也许需要适当的修改下。 ...

多谢!这么晚还没歇呢?祝安好!
作者: 兰中闲人    时间: 2024-8-20 02:44
本帖最后由 兰中闲人 于 2024-8-20 02:52 编辑
slore 发表于 2024-8-20 00:51
基本思路就是把hta中的脚本部分保存成脚本文件,直接用wscript.exe调用。
没测试,也许需要适当的修改下。 ...

反复试了多次,似乎不行。原因应该是,js 无窗口,vbs 执行完代码后窗口也关闭,winpeshl 也随其打开的第一个窗口的没有或关闭而重启。hta 文件打开后可以隐藏自己,只要不关机就会持续存在,也就能保证 winpeshl 持续存在不重启。这是  hta 文件起到的主要作用,隐藏运行其它文件只是附带的作用。

不过,还是谢谢指点。
作者: slore    时间: 2024-8-20 09:47
本帖最后由 slore 于 2024-8-20 09:56 编辑
兰中闲人 发表于 2024-8-20 02:44
反复试了多次,似乎不行。原因应该是,js 无窗口,vbs 执行完代码后窗口也关闭,winpeshl 也随其打开的第 ...

>只要不关机就会持续存在,也就能保证 winpeshl 持续存在不重启。这是  hta 文件起到的主要作用

peset.cmd的最后不exit 加一个 pause 不就完事了?
嫌多一个cmd.exe进程的话,peset.js的最后加个Sleep一直等待也行。
  1. while (1) WScript.Sleep(3600000)
复制代码


作者: 兰中闲人    时间: 2024-8-20 22:02
本帖最后由 兰中闲人 于 2024-8-20 22:07 编辑

用 js 可以,只是 setTimeou 找了多种方法都没有效果,而同样的代码放在 hta 里却有效,能设定组件启动顺序,解决了一些问题。不要见笑,本人于电脑方面就一个白丁,一切在度娘上找。谢谢!
作者: 孤山飞雪    时间: 2024-8-20 22:35

好好学习下
作者: slore    时间: 2024-8-20 22:47
兰中闲人 发表于 2024-8-20 22:02
用 js 可以,只是 setTimeou 找了多种方法都没有效果,而同样的代码放在 hta 里却有效,能设定组件启动顺序 ...

一般搜索的js都是JavaScript,网页里面可以用。
但是不是微软的jscript,一些功能和方法是不同的。
作者: 2011matrixvexx    时间: 2024-8-22 15:50
感谢楼主分享
作者: j4tan    时间: 2024-8-23 11:40
学习了,感谢分享支持一下
作者: zqfeng01    时间: 2024-8-23 11:47
谢谢分享!
作者: j4tan    时间: 2024-8-25 14:10
л
作者: yzqmxh    时间: 2024-8-26 08:06
谢谢分享
作者: j4tan    时间: 2024-8-28 10:39
学习了有空试试,感谢大佬分享经验
作者: wn168cn@163.com    时间: 2024-10-18 14:43
感谢分享




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3