当前位置: 首页 > 图文教程 > 脚本技术 > VBScript > vbs中关于计算机名的相关讨论

VBScript
用vbs脚本来关闭 HTML 页面的代码
用vbs实现确定是否安装了某个特定的补丁
用vbs确定用户的登录名的代码
用vbs找到映射到共享的所有驱动器并重新映射它们
可以从一台远程服务器运行 SP2 安装程序Install.vbs
用vbs判断一个日期是否在指定的时段内
vbs+hta中实现在单个 onClick 参数中包括多个子例程的代码
vbs中实现启动两个应用程序,一直等到其中一个程序结束,然后关闭另一个?
用vbs实现对文本文件中的项计数
用vbs对文本文件的内容进行排序
用vbscript把 Word 文档保存为文本文件的代码
用vbs返回 Internet Explorer 的下载控件和 Applet 的列表
用vbscript合并多个文本文件的代码
用vbscript防止本地用户更改其密码
用vbs针对一个 IP 地址范围运行脚本
用vbs 实现从剪贴板中抓取一个 URL 然后在浏览器中打开该 Web 站点
使用vbscript脚本在表单中进行选择的代码
一个把任何文件转成批处理的vbs脚本Any2Bat.vbs
windows脚本调试howto的方法
注册表的禁用与解锁方法集合

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 83 ::
收藏到网摘: n/a

原文: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