无忧启动论坛

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

win8pe启动中/启动后自动更改计算机名的问题

[复制链接]
跳转到指定楼层
1#
发表于 2013-3-10 18:13:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我来描述一下,情况是这样的:

局域网内会有多台电脑同时启动Win8PE,它们启动后的计算机名是相同的,只有最先启动完的电脑可以访问局域网的共享资源,之后启动完成的电脑是无法访问的。

在使用2003PE的时候解决这个问题,是通过PECMD的脚本完成的。首先在启动网络的CMD中用set命令定义一个变量为随机数,然后用PECMD.EXE UPNP -pnp -cn %pename% -wg WORKGROUP,将计算机名设置为随机数,然后会有个choice手动选择一个内网IP,一直都工作的很好。

最近开始折腾8pe,但用上面的方法没有成功,请教一下大家如何在8pe里实现自动更改计算机名?谢谢大家!
推荐
 楼主| 发表于 2013-3-10 21:11:43 | 只看该作者
自己顶一下吧,,貌似这种问题很少人遇到
回复

使用道具 举报

推荐
发表于 2014-11-14 15:24:12 | 只看该作者
求问 为什么不能用 ENVI PCNAME=%RANDOM% 来设置??
回复

使用道具 举报

推荐
 楼主| 发表于 2013-3-11 00:02:16 | 只看该作者
谢谢楼上的朋友,让你费心了,只是那段代码不太合适。



放狗搜索后结果的总结:

首先开机CMD批处理中先用set 将pcname变量设置为随机数,然后如下就行了:

reg add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ComputerName" /f /v "ComputerName" /t REG_SZ /d "8PE%pcname%"
reg add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ActiveComputerName" /f /v "ComputerName" /t REG_SZ /d "8PE%pcname%"
reg add "HKLM\SYSTEM\ControlSet001\services\Tcpip\Parameters" /f /v "hostname" /t REG_SZ /d "8PE%pcname%"
reg add "HKLM\SYSTEM\ControlSet001\services\Tcpip\Parameters" /f /v "NV Hostname" /t REG_SZ /d "8PE%pcname%"


8pe下测试成功。
回复

使用道具 举报

推荐
发表于 2013-3-10 23:03:26 | 只看该作者

回复 #4 北斗 的帖子

[fly]根据下面的自己慢慢搞                 [/fly]

::赋予注册表根键变量
set hklm=reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
set hklm2=reg add "HKLM\SYSTEM\ControlSet001
set hklm3=reg add "HKLM\SYSTEM\ControlSet002
set hklm4=reg add "HKLM\SYSTEM\CurrentControlSet
set /p name=请输入计算机名:
set reg=/t reg_sz /d %name% /f

::开始导入注册表来修改计算机名
%hklm% /v DefaultDomainName %reg%
%hklm% /v AltDefaultDomainName %reg%
%hklm2%\Control\ComputerName\ActiveComputerName" /v ComputerName %reg%
%hklm2%\Control\ComputerName\ComputerName" /v ComputerName %reg%
%hklm2%\Services\Eventlog" /v ComputerName %reg%
%hklm2%\Services\Tcpip\Parameters" /v "NV Hostname" %reg%
%hklm2%\Services\Tcpip\Parameters" /v Hostname %reg%
%hklm3%\Control\ComputerName\ComputerName" /v ComputerName %reg%
%hklm3%\Services\Eventlog" /v ComputerName %reg%
%hklm3%\Services\Tcpip\Parameters" /v "NV Hostname" %reg%
%hklm3%\Services\Tcpip\Parameters" /v Hostname %reg%
%hklm4%\Control\ComputerName\ActiveComputerName" /v ComputerName %reg%
%hklm4%\Control\ComputerName\ComputerName" /v ComputerName %reg%
%hklm4%\Services\Eventlog" /v ComputerName %reg%
%hklm4%\Services\Tcpip\Parameters" /v "NV Hostname" %reg%
%hklm4%\Services\Tcpip\Parameters" /v Hostname %reg%
回复

使用道具 举报

推荐
 楼主| 发表于 2013-3-10 22:36:32 | 只看该作者
原帖由 2013723280 于 2013-3-10 22:16 发表
time.cmd内容如下 写入time.txt文件  你要做的就是把两个时间(随机时间 和 电脑时间)设置成变量 用变量设置电脑名                                         
@echo off
set /a randh=%random%%%24
set / ...

谢谢兄弟,我现在的问题不是产生变量的问题,而是怎么把变量(在开机的时候或者驱动网络的时候)变成8pe的计算机名的问题。变量我直接用%random%就可以,0-32726之间的随机数够我用了。
回复

使用道具 举报

推荐
发表于 2013-3-10 22:16:06 | 只看该作者

回复 #1 北斗 的帖子

[fly] time.cmd内容如下 写入time.txt文件  你要做的就是把两个时间(随机时间 和 电脑时间)设置成变量 用变量设置电脑名                                         [/fly]
@echo off
set /a randh=%random%%%24
set /a randm=%random%%%60
if %randm% lss 10 set randm=0%randm%
for /f "delims=: tokens=1-3" %%i in ("%time:~0,-6%") do (
set time_hend=%%i
set time_mend=%%j
)
echo %randh%:%randm%>>time.txt
echo %time_hend: =%:%time_mend%>>time.txt
if %randh%:%randm%==%time_hend: =%:%time_mend% md time.txt

[ 本帖最后由 2013723280 于 2013-3-10 22:24 编辑 ]
回复

使用道具 举报

7#
发表于 2013-3-11 12:28:17 | 只看该作者

回复 #6 北斗 的帖子

另外提醒一下,环境变量中的计算机名也要改一下就一致了。
回复

使用道具 举报

8#
 楼主| 发表于 2013-3-11 12:40:22 | 只看该作者
原帖由 hhh333 于 2013-3-11 12:28 发表
另外提醒一下,环境变量中的计算机名也要改一下就一致了。

谢谢hhh333大大。
回复

使用道具 举报

9#
发表于 2013-3-11 13:25:28 | 只看该作者
要是你的PE不是特别精简的话,可以试试wpeinit.exe+schema.dat的方式,应该能直接生成一个随机的计算机名。
回复

使用道具 举报

10#
发表于 2013-3-11 14:42:34 | 只看该作者

回复 #9 sp_star 的帖子

也是,本来就会随机地生成计算机名的。

我用如下代码来固定计算机名:
  1. _SUB ComputerNameSet
  2. REGI HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName\ComputerName=WINPE
  3. REGI HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName\ComputerName=WINPE
  4. REGI HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Hostname=WINPE
  5. REGI HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\NV Hostname=WINPE
  6. REGI HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\ComputerName=WINPE
  7. _END
复制代码


好象还没有比较好的办法来直接更改计算机名,用以上代码后,最好再kill explorer就可以使改变生效。也许更名是一个对系统进行重要改变的动作,所以正常系统中更名是要求重新启动的,MS也没有提供更名的命令。

[ 本帖最后由 hhh333 于 2013-3-11 14:50 编辑 ]
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-28 11:47

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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