无忧启动论坛

标题: PE改名生效的问题 [打印本页]

作者: hhh333    时间: 2010-6-23 12:25
标题: PE改名生效的问题
这个问题是在维护版中用一个内核做网启服务器时出现,大致思路是这样的:

因为一个内核既做服务器又做工作站,就会有网络重名的问题,为了避免冲突在启动DHCP之前对服务器进行改名,譬如原来的是pews(这个是在网卡驱动时用PECMD.EXE UPNP -pnp -cn PEWS -wg WORKGROUP建立),现在要改为winpe
1、再运行PECMD.EXE UPNP -pnp -cn winpe -wg WORKGROUP-->显然不行。
2、停止网络相关服务再改注册表,再kill exploer刷新,再启动相关服务也不行。

目前可行的办法是用那个网络设置工具更改网络标识就行了。(这个经仔细测试也是有时行有时不行,也许是虚拟机的原因,实机应该不会)

现在是想问大家用命令行方式如何实现。

要检查这个设置是否生效,在另一台工作站上发ping /n 1 WINPE 查看就可以了,不要在本机看。

[ 本帖最后由 hhh333 于 2010-6-23 19:03 编辑 ]
作者: HB天意    时间: 2010-6-23 12:44
H大不断钻研,不断有新东西。
真是佩服啊!
等待网络高手解决。

[ 本帖最后由 yidawpf 于 2010-6-23 12:46 编辑 ]
作者: pseudo    时间: 2010-6-23 13:38
网络重名冲突是可以避免的,而且超简单。
0PE一直是一个内核既做服务器又做工作站,这类问题已经处理过,代码在net.wim里的批处理。
作者: hhh333    时间: 2010-6-23 13:45
标题: 回复 #3 pseudo 的帖子
是在DOS下还是在进入windows后解决。

让每一台机器用不同的名称不难。我的要求是启动时是不知道它是否作服务器,网卡有时可能驱动或不驱动,因为有时驱动网卡可能不是为了作PXE服务器,这个改名过程应该发生在加载DHCP网络组件时,这个时候ID将固定为WINPE。之所以要固定,是方便工作站net use w: \\winpe\peroot之用的。我想这个是修改计算机名而不重启即生效的问题。

P大能说说你的思路吗?

[ 本帖最后由 hhh333 于 2010-6-23 14:24 编辑 ]
作者: pseudo    时间: 2010-6-23 14:22
进入桌面后加载网络时。
每台机器机器名不同。
客户机通过ip而不是机器名访问服务器。
作者: hhh333    时间: 2010-6-23 14:28
标题: 回复 #5 pseudo 的帖子
这个我也有想到,我是用ipconfig/all来得到DHCP Server,但有一个这样的问题,如果网络中有一个上网用的启用了DHCP的路由器,这个可能会变成工作站的DHCP Server,也会造成存取服务器的失败。
以下是我的连接服务器的代码
  1. @ECHO OFF
  2. :NETUSEPEROOT
  3. SET DHCPSVR=WINPE
  4. ECHO.|NET USE W: \\%DHCPSVR%\PEROOT /user:guest /persistent:no
  5. IF EXIST W:\NUL GOTO LOADOP
  6. For /F "tokens=15 delims= " %%i In ('IPCONFIG /ALL^|find /I "DHCP Server"') do SET DHCPSVR=%%i
  7. ECHO.|NET USE W: \\%DHCPSVR%\PEROOT /user:guest /persistent:no
  8. IF EXIST W:\NUL GOTO LOADOP
  9. ECHO.
  10. ECHO 服务器 WINPE或%DHCPSVR% 未连接上,请确保:
  11. ECHO.
  12. ECHO   1、服务器端 Guest用户密码为空;
  13. ECHO   2、本局域网中无其他DHCP服务器;
  14. ECHO   3、本工作站不指定IP而自动获取。
  15. ECHO.
  16. ECHO 5秒后重试……
  17. PECMD.EXE wait 5000
  18. GOTO NETUSEPEROOT
  19. :LOADOP
  20. START PECMD.EXE W:\H3PE\WINPE.INI
  21. DEL /Q "%USERPROFILE%\桌面\装载网启服务器上外置程序.LNK"
  22. EXIT
复制代码

[ 本帖最后由 hhh333 于 2010-6-23 19:05 编辑 ]
作者: 网虫2008    时间: 2010-6-23 15:23
如网启客户端与服务端重名,,用IP的方式链接共享就可以。

我是在启用网络支持的 START_NET.CMD 中设置了一个pe_name变量,通过查找是否存在网络启动服务器程序来判别,,RANDOM 变量是随机生成的数字

PECMD.EXE UPNP -pnp -cn %pe_name% -wg WORKGROUP

If Exist "%USERPROFILE%\「开始」菜单\程序\网络工具\开启网络启动服务器.LNK" (
set P_Nt=PECMD SERV
set pe_name=WinPE
) Else (
set P_Nt=NET START
set pe_name=WinPE%RANDOM%
)


开启网络启动服务器.LNK 这个快捷在PE启动时判断,,这样服务端启用网络,无论是否再进行网启服务,都会命名为固定的 WINPE,,客户端启动时,只加载ISO并没有载入服务器程序,开启网络启动服务器.LNK 也就不会出现,客户端执行网络支持时,名称就会随机生成 WINPE+数字

[ 本帖最后由 网虫2008 于 2010-6-23 15:33 编辑 ]
作者: hhh333    时间: 2010-6-23 16:34
标题: 回复 #7 网虫2008 的帖子
如果服务器与工作站使用同一个全内置PE,这种方法是行不通的。
作者: 网虫2008    时间: 2010-6-23 17:46
原帖由 hhh333 于 2010-6-23 16:34 发表
如果服务器与工作站使用同一个全内置PE,这种方法是行不通的。


再怎么全内置,,比如 MYISO.ISO,,但客户端调用服务器的东西,应该不会把所有的都全部加载吧,,比如调用MYISO.ISO的那个引导文件等,,只要有区别,就可以依据判别呀,,,或者在客户端加载时,建立一个标志性文件(不过这种方法有点麻烦)
作者: hhh333    时间: 2010-6-23 18:03
标题: 回复 #9 网虫2008 的帖子
这个也是不明智的,因为X盘肯定是完全一样的。而要通过判断其他盘内的东西或标志都是困难的,因为启动的方式太多。
作者: 2010xr811    时间: 2010-6-23 18:19
学习了
          .
作者: chenall    时间: 2010-6-23 19:21
记得bartpe可以使用随机计算机名的不知PECMD有没有支持


bartpe -pnp -cn winpe-* -wg WORKGROUP

如果不行,那CMD还有一个变量%random%(生成一个0-32767之间的任意数字)可以利用一下

[ 本帖最后由 chenall 于 2010-6-23 19:25 编辑 ]
作者: hhh333    时间: 2010-6-23 19:32
标题: 回复 #12 chenall 的帖子
现在关键的是,已经驱动网卡后,如何修改并生效。
作者: 网虫2008    时间: 2010-6-23 22:45
原帖由 hhh333 于 2010-6-23 19:32 发表
现在关键的是,已经驱动网卡后,如何修改并生效。


晕,,我之前理解错了,,原来你是要在启用网络支持后启动网启服务支持之前让修改名称以CMD方式实现。。。。

这有点儿难办了,,不过咱们这儿这么多高手,问题总会解决滴,等我明天醒酒了,也搞搞看,

不过话说回来,,不知道为什么你要以此为前题去研究这个东西,,好像把问题复杂化了,,还是应该在启用网络支持的同时就解决这个问题更彻底一些。
作者: 66369    时间: 2010-6-24 08:21
要命令行修改.到这里再发一贴.

http://bbs.wuyou.net/forumdisplay.php?fid=8
作者: hhh333    时间: 2010-6-24 13:33
标题: 回复 #15 66369 的帖子
到网上搜了很久,未发现PE中切实可行的办法,只能用如下方法在网卡驱动阶段解决。反正用户驱动网卡时是有一定用途的。


[ 本帖最后由 hhh333 于 2010-6-24 13:48 编辑 ]
作者: zhaohj    时间: 2010-6-24 17:24
修改机器名不重启生效,我做一键还原下搞过。用注册表法可以,我找一下。

reg add "HKLM\System\CurrentControlSet\Control\ComputerName\ActiveComputerName" /v ComputerName /t reg_sz /d zhj /f
reg add "HKLM\System\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /t reg_sz /d zhj /f
reg add "HKLM\System\CurrentControlSet\Services\Tcpip\Parameters" /v Hostname /t reg_sz /d zhj /f
Reg add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d zhj /f
Reg add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ActiveComputerName" /v ComputerName /t REG_SZ /d zhj /f
Reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v NV Hostname /t REG_SZ /d zhj /f
Reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v Hostname /t REG_SZ /d zhj /f
Reg add "HKLM\SYSTEM\ControlSet003\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d zhj /f
Reg add "HKLM\SYSTEM\ControlSet003\Services\Tcpip\Parameters" /v NV Hostname /t REG_SZ /d zhj /f
Reg add "HKLM\SYSTEM\ControlSet003\Services\Tcpip\Parameters" /v Hostname /t REG_SZ /d zhj /f

xp下是这样的,不用重启生效。上面机器名是zhj

[ 本帖最后由 zhaohj 于 2010-6-24 17:41 编辑 ]
作者: hhh333    时间: 2010-6-24 21:36
标题: 回复 #17 zhaohj 的帖子
我原先就是这么来的,但实际上并没有生效,不信你从网内的一台机或者虚拟机的主机发ping /n 1 zhj。肯定不通。但在penetcfg中更改后可以ping 通。

而且我还发现penetcfg也还有些问题,如你原先是PE0,改为PE1后,PE1有效,再改成PE2,又有效,但往回改成PE0、PE1好象又都不行,即只要用过的就不能再用了。

[ 本帖最后由 hhh333 于 2010-6-24 21:39 编辑 ]
作者: lxl1638    时间: 2010-6-24 22:09
CALL $Kernel32.dll,SetComputerNameW,YourComputerName
作者: hhh333    时间: 2010-6-25 10:17
标题: 回复 #19 lxl1638 的帖子
那我试一下看行不行,如果行的话那就方便了。
作者: zhaohj    时间: 2010-6-25 10:26
原帖由 hhh333 于 2010-6-25 10:17 发表
那我试一下看行不行,如果行的话那就方便了。


试过了,没任何反应。看来最好的解决办法是用IP
作者: hhh333    时间: 2010-6-25 10:55
pecmd call $kernel32.dll,SetComputerNameW,MYPE
经查实,只改变了注册表中HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName的值,其他的都没有动。更加不行。
作者: zhaohj    时间: 2010-6-25 11:35
老九的pecmd加个name,到是个不错的选择。老九改一下很容易吧。
作者: lxl1638    时间: 2010-6-25 11:40
本人只在正常系统中测试,发现

pecmd call $kernel32.dll,SetComputerNameW,YourComputerName

可以修改,但没有在 PE 中试验。
作者: zhaohj    时间: 2010-6-25 11:43
改名用reg的批处理是成功的,但ping机器名不通。正常系统下也没问题的。
作者: hhh333    时间: 2010-6-25 12:33
标题: 回复 #25 zhaohj 的帖子
我看网上的不重启生效都是用wmic命令来实现的。MS为什么要求重启?肯定有不好处理的地方。
作者: lxl1638    时间: 2010-6-25 17:37
原帖由 hhh333 于 2010-6-25 12:33 发表
我看网上的不重启生效都是用wmic命令来实现的。MS为什么要求重启?肯定有不好处理的地方。


是有点蛋痛,在正常系统中,本人试验可以用 PECMD CALL 来修改,但一样要重启后才生效。

未命名.PNG (14.21 KB, 下载次数: 49)

未命名.PNG

作者: hhh333    时间: 2010-6-26 07:43
标题: 回复 #27 lxl1638 的帖子
实际上这上名称问题还有个隐患,不知大家注意没有,驱动网卡时如果用了Winpe以外的其他名称,但%computername%还是没变,这个时候如果来一个ping %ComputerName%是不通的。经查实,主要是系统环境变量中的Computername没有更改。有必要对PECMD.EXE UPNP -pnp -cn PEWS -wg WORKGROUP这条命令进行完善!(如这条命令虽然改名也生效了,但%ComputerName%不是PEWS,还是WINPE)

[ 本帖最后由 hhh333 于 2010-6-26 07:48 编辑 ]




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