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

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

时间: 2024-10-01 06:32:49

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

用vbs实现更改计算机的说明的代码_vbs

问: 您好,脚本专家!在使用 Windows 资源管理器连接到远程计算机时,可以在"详细信息"窗格中看见该计算机的说明.如何更改计算机的说明? -- GF 答: 您好,GF.只是为了确保每个人都清楚我们谈论的内容,我们不会谈论 Active Directory 中的"说明"属性,而是谈论在整个网络范围内广播的计算机说明.(如果您真正想知道的是如何更改 Active Directory 中的"说明"属性,请参阅此"您好,脚本专家!&quo

VBS中的字符串连接的性能问题_vbs

当然,对于少量的字符串连接,效率并没有对程序造成多大影响,现在让我们考虑一个极端的问题:将1到100000之间的所有数字连接成一个字符串. 最简单的解决方案是直接使用&连接: 复制代码 代码如下: begin = Timer For i = 1 To 100000 str = str & CStr(i) Next WScript.Echo str finish = Timer WScript.Echo finish - begin 但是这个程序在我电脑上需要运行60.648秒,效率太低.换

WinXP系统中修改Netbios名的过程详解

  首先和大家说一下,计算机名也就是我们常说的主机名,如下图: 上图中的XP1即为计算机名,而今天我们要谈的是netbios名,简要的说,netbios名是在win98这样的系统下用于标示计算机的,在现行的一些操作系统中,它亦然存在,只是默认和计算机名相同,但仅限其前15位,因为netbios名最大也才16位,最后一位用来某种服务或应用程序.那如何查看呢? 这两个红框分别是计算机名和netbios名,默认也就是一样的. 现在我们来修改,请打开注册表,并找到下面的键值 HKEY_LOCAL_MAC

每日Ubuntu小技巧-更改Samba工作组和计算机名

这是另一个Ubuntu的新用户问的最多的问题.这个问题的答案很简单,但当你接触新事物时,你需要时间来完全理解它. 这是我们前几天收到的问题: 如何更改Samba的工作组名和Ubuntu的计算机名称? 对于大多数Ubuntu用户,改变他们的计算机名称是极少发生的事情,更别说samba工作组了.一些进阶使用者可能要学习如何用Ubuntu很简单的做到这一点. 当涉及到在Ubuntu中更改计算机名时,我们曾写过一个简单的帖子,可以点击这里找到.按照这个怎样修改你的计算机名字的简易指南来实现目的. 也许还

Windows 8中查看和修改计算机名、域和工作组

  系统下同时按住键盘上 Win 键 "Windows" 和 "X" 键打开系统菜单,点击选择"系统"; 计算机名.域和工作组-无法查看工作组计算机"> 选择中央区域的"更改设置"; 根据使用需要更改计算机名.域或工作组; 做过更改后,需要重启才能生效.

vc获取计算机名和ip地址的方法_C 语言

本文实例讲述了vc获取计算机名和ip地址的方法.分享给大家供大家参考.具体实现方法如下: #include <winsock2.h> #include <stdio.h> #pragma comment(lib,"ws2_32.lib") void main() { WSADATA wsadata; WORD dwVersionRequested; int err; err=WSAStartup(dwVersionRequested,&wsadata);

计算机名DNS网关IP(大家可以用来学习)_DOS/BAT

@echo off :main cls echo. echo. echo 1.生成自动配置计算机名,DNS,网关,IP脚本,IPX内部网络号 echo. echo 2.网刻服务器自动配置 echo. echo 3.电信网通线路切换生成器 echo. echo 4.退出脚本 echo. echo 请输入1,2,3或4,输入其他字符,后果自负. :restart1 set /p select=请输入: set /a select=%select%-0 if %select%==1 goto ipdn

VBS中Run和Exec的区别_vbs

Set ws = CreateObject("WScript.Shell") '这里创建一个对象引用,以便在以下示例代码中使用. 'Demon注:这个变量名怎么这么猥琐(WS) 语法:(常识(Demon注:常识这个词我喜欢):作为过程使用时,不要加括号,否则出现编译器错误(参数唯一或没有时加括号不会出错,但建议不要加)) 复制代码 代码如下: ws.Run(strCommand, [intWindowStyle], [bWaitOnReturn]) [Set objExec =] ws

Xcode中修改变量名、类名及字符串的替换操作

Xcode中修改变量名.类名及字符串的替换操作         在做iOS开发代码优化的工作时,优化代码结构之前,我们应该先整理好工程的外貌,将文件和类的命名进行规范,在Xcode中为我们提供了方便而强大的名称修改功能. 第一步:修改类名         将鼠标点击放在类的名称上,选择Xcode工具栏中的edit->refactor->rename: 之后,将类名更改为我们需要的模式点击preview,记得将下面的关联文件勾选: Xcode会为我们检测出需要更改的地方,浏览无误后点击save.