无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 4055|回复: 27
打印 上一主题 下一主题

PE改名生效的问题

[复制链接]
跳转到指定楼层
1#
发表于 2010-6-23 12:25:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这个问题是在维护版中用一个内核做网启服务器时出现,大致思路是这样的:

因为一个内核既做服务器又做工作站,就会有网络重名的问题,为了避免冲突在启动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 编辑 ]
2#
发表于 2010-6-23 12:44:49 | 只看该作者
H大不断钻研,不断有新东西。
真是佩服啊!
等待网络高手解决。

[ 本帖最后由 yidawpf 于 2010-6-23 12:46 编辑 ]
回复

使用道具 举报

3#
发表于 2010-6-23 13:38:18 | 只看该作者
网络重名冲突是可以避免的,而且超简单。
0PE一直是一个内核既做服务器又做工作站,这类问题已经处理过,代码在net.wim里的批处理。
回复

使用道具 举报

4#
 楼主| 发表于 2010-6-23 13:45:02 | 只看该作者

回复 #3 pseudo 的帖子

是在DOS下还是在进入windows后解决。

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

P大能说说你的思路吗?

[ 本帖最后由 hhh333 于 2010-6-23 14:24 编辑 ]
回复

使用道具 举报

5#
发表于 2010-6-23 14:22:45 | 只看该作者
进入桌面后加载网络时。
每台机器机器名不同。
客户机通过ip而不是机器名访问服务器。
回复

使用道具 举报

6#
 楼主| 发表于 2010-6-23 14:28:33 | 只看该作者

回复 #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 编辑 ]
回复

使用道具 举报

7#
发表于 2010-6-23 15:23:57 | 只看该作者
如网启客户端与服务端重名,,用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 编辑 ]
回复

使用道具 举报

8#
 楼主| 发表于 2010-6-23 16:34:09 | 只看该作者

回复 #7 网虫2008 的帖子

如果服务器与工作站使用同一个全内置PE,这种方法是行不通的。
回复

使用道具 举报

9#
发表于 2010-6-23 17:46:08 | 只看该作者
原帖由 hhh333 于 2010-6-23 16:34 发表
如果服务器与工作站使用同一个全内置PE,这种方法是行不通的。


再怎么全内置,,比如 MYISO.ISO,,但客户端调用服务器的东西,应该不会把所有的都全部加载吧,,比如调用MYISO.ISO的那个引导文件等,,只要有区别,就可以依据判别呀,,,或者在客户端加载时,建立一个标志性文件(不过这种方法有点麻烦)
回复

使用道具 举报

10#
 楼主| 发表于 2010-6-23 18:03:00 | 只看该作者

回复 #9 网虫2008 的帖子

这个也是不明智的,因为X盘肯定是完全一样的。而要通过判断其他盘内的东西或标志都是困难的,因为启动的方式太多。
回复

使用道具 举报

11#
发表于 2010-6-23 18:19:30 | 只看该作者
学习了
          .
回复

使用道具 举报

12#
发表于 2010-6-23 19:21:43 | 只看该作者
记得bartpe可以使用随机计算机名的不知PECMD有没有支持


bartpe -pnp -cn winpe-* -wg WORKGROUP

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

[ 本帖最后由 chenall 于 2010-6-23 19:25 编辑 ]
回复

使用道具 举报

13#
 楼主| 发表于 2010-6-23 19:32:01 | 只看该作者

回复 #12 chenall 的帖子

现在关键的是,已经驱动网卡后,如何修改并生效。
回复

使用道具 举报

14#
发表于 2010-6-23 22:45:37 | 只看该作者
原帖由 hhh333 于 2010-6-23 19:32 发表
现在关键的是,已经驱动网卡后,如何修改并生效。


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

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

不过话说回来,,不知道为什么你要以此为前题去研究这个东西,,好像把问题复杂化了,,还是应该在启用网络支持的同时就解决这个问题更彻底一些。
回复

使用道具 举报

15#
发表于 2010-6-24 08:21:41 | 只看该作者
要命令行修改.到这里再发一贴.

http://bbs.wuyou.net/forumdisplay.php?fid=8
回复

使用道具 举报

16#
 楼主| 发表于 2010-6-24 13:33:01 | 只看该作者

回复 #15 66369 的帖子

到网上搜了很久,未发现PE中切实可行的办法,只能用如下方法在网卡驱动阶段解决。反正用户驱动网卡时是有一定用途的。


[ 本帖最后由 hhh333 于 2010-6-24 13:48 编辑 ]
回复

使用道具 举报

17#
发表于 2010-6-24 17:24:19 | 只看该作者
修改机器名不重启生效,我做一键还原下搞过。用注册表法可以,我找一下。

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 编辑 ]
回复

使用道具 举报

18#
 楼主| 发表于 2010-6-24 21:36:00 | 只看该作者

回复 #17 zhaohj 的帖子

我原先就是这么来的,但实际上并没有生效,不信你从网内的一台机或者虚拟机的主机发ping /n 1 zhj。肯定不通。但在penetcfg中更改后可以ping 通。

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

[ 本帖最后由 hhh333 于 2010-6-24 21:39 编辑 ]
回复

使用道具 举报

19#
发表于 2010-6-24 22:09:15 | 只看该作者
CALL $Kernel32.dll,SetComputerNameW,YourComputerName
回复

使用道具 举报

20#
 楼主| 发表于 2010-6-25 10:17:06 | 只看该作者

回复 #19 lxl1638 的帖子

那我试一下看行不行,如果行的话那就方便了。
回复

使用道具 举报

21#
发表于 2010-6-25 10:26:06 | 只看该作者
原帖由 hhh333 于 2010-6-25 10:17 发表
那我试一下看行不行,如果行的话那就方便了。


试过了,没任何反应。看来最好的解决办法是用IP
回复

使用道具 举报

22#
 楼主| 发表于 2010-6-25 10:55:17 | 只看该作者
pecmd call $kernel32.dll,SetComputerNameW,MYPE
经查实,只改变了注册表中HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName的值,其他的都没有动。更加不行。
回复

使用道具 举报

23#
发表于 2010-6-25 11:35:27 | 只看该作者
老九的pecmd加个name,到是个不错的选择。老九改一下很容易吧。
回复

使用道具 举报

24#
发表于 2010-6-25 11:40:43 | 只看该作者
本人只在正常系统中测试,发现

pecmd call $kernel32.dll,SetComputerNameW,YourComputerName

可以修改,但没有在 PE 中试验。
回复

使用道具 举报

25#
发表于 2010-6-25 11:43:20 | 只看该作者
改名用reg的批处理是成功的,但ping机器名不通。正常系统下也没问题的。
回复

使用道具 举报

26#
 楼主| 发表于 2010-6-25 12:33:32 | 只看该作者

回复 #25 zhaohj 的帖子

我看网上的不重启生效都是用wmic命令来实现的。MS为什么要求重启?肯定有不好处理的地方。
回复

使用道具 举报

27#
发表于 2010-6-25 17:37:12 | 只看该作者
原帖由 hhh333 于 2010-6-25 12:33 发表
我看网上的不重启生效都是用wmic命令来实现的。MS为什么要求重启?肯定有不好处理的地方。


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

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

未命名.PNG
回复

使用道具 举报

28#
 楼主| 发表于 2010-6-26 07:43:28 | 只看该作者

回复 #27 lxl1638 的帖子

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

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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-12-3 04:38

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表