当前位置: 移动技术网 > IT编程>脚本编程>VBScript > vbs中关于计算机名的相关讨论

vbs中关于计算机名的相关讨论

2017年12月12日  | 移动技术网IT编程  | 我要评论

hani九,颤栗五大丧尸,宁波兼职招聘

原文:http://www.opencjk.org/~scz/

 关于计算机名的相关讨论

http://www.opencjk.org/~scz/windows/200603151441.txt

q: 我的电脑->属性->计算机名->计算机描述,我想改动这里,但它是灰色不可写的。

a: 如果lanmanserver service未启用,就会这样。执行"net start srv"即可。

q: 我想修改所属工作组,但那里是灰色不可写的。

a: 如果lanmanworkstation service未启用,就会这样。执行"net start rdr"即可。

q: 如何在命令行上修改计算机名

a: backend@nsfocus

--------------------------------------------------------------------------
set obj     = getobject( "winmgmts:\\.\root\cimv2" )
set list    = obj.execquery( "select * from win32_computersystem" )
for each x in list
    x.rename( wscript.arguments.item( 0 ) )
next
--------------------------------------------------------------------------

> cscript.exe //nologo computerrename.vbs xxx

d: scz@nsfocus

平常自然语言所说的计算机名非常不精确,下面精确地介绍一下与之相关的注册表项:

--------------------------------------------------------------------------
windows registry editor version 5.00

[hkey_local_machine\system\currentcontrolset\control\computername\activecomputername]
"computername"="cloudsky"

[hkey_local_machine\system\currentcontrolset\control\computername\computername]
"computername"="cloudsky"

[hkey_local_machine\system\currentcontrolset\services\tcpip\parameters]
"domain"=""
"hostname"="cloudsky"
"nv domain"=""
"nv hostname"="cloudsky"
--------------------------------------------------------------------------

activecomputername处的computername对应当前netbios名。另一处computername将
在下一次重启时被复制到activecomputername处。

"<hostname>.<domain>"对应当前fqdn(全称域名),"<nv hostname>.<nv domain>"将
在下一台重启时被复制到"<hostname>.<domain>"处。

显然,我们有两种名字,一种是netbios名,一种是fqdn,它们之间没有必然联系,
尽管大多数时候它们是一致的。netbios名可用在很多地方,适用于tcp/ip、ipx/spx、
netbeui等实现了netbios接口的通信协议。fqdn却只用于tcp/ip协议。微软在名字解
析问题上经历了多次变化,名字解析顺序各不相同,最终用户很难区分netbios名与
fqdn。比如"ping <name>"究竟使用哪类名字,会有多个变种,依赖操作系统、网络
拓扑,这里不详细讨论了。总之要记住,说起计算机名时,有两种名字。

在gui上修改计算机名时,实际操作的是:

--------------------------------------------------------------------------
[hkey_local_machine\system\currentcontrolset\control\computername\computername]
"computername"="cloudsky"

[hkey_local_machine\system\currentcontrolset\services\tcpip\parameters]
"nv domain"=""
"nv hostname"="cloudsky"
--------------------------------------------------------------------------

现在应该明白为什么在gui上修改计算机名后需要要重启才能生效了吧。

一般不建议直接操作注册表修改这些值,可以考虑win32 api。setcomputername()只
能设置netbios名。setcomputernameex()可用于设置netbios名或fqdn。

还可以用wmi,就像backend所演示的那样。这种办法与gui修改法完全等价,同时修
改了netbios名与fqdn,重启后生效。注意,这两种办法修改netbios名时自动将之转
换成大写,而fqdn保持大小写敏感。

用注册表监视器观察hostname.exe,就会发现该命令只取了fqdn中的hostname,并不
取netbios名。"nbtstat -a <target>"所涉及的则是netbios名。devmgmt.msc取的是
activecomputername处的netbios名。

如果破坏了hkey_local_machine\system\currentcontrolset\control\computername,
在我的电脑里查看netbios名,可能是空白。此时访问"\\<ip>\ipc$",会出错,微软
给出的错误信息基本无用。抓包发现没有任何ip报文出现,出错层次很高,还没到达
ip层。访问"\\<name>\ipc$"倒是能成功。flier就碰上了这种事,应该是安装某软件
时直接操作注册表修改计算机名出岔子了。

q: 在xp中打开磁盘管理,报"rpc服务不可用"。

a:

这是"logical disk manager/dmserver"服务所用计算机名与activecomputername处
的netbios名不匹配所致,一般都是因为后者被破坏。重启os后如果还不能恢复,请
在gui上重新设置计算机名,应该就可以了。参看:

http://support.microsoft.com/kb/884564

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网