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

(0)

相关推荐

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

    原文:http://www.opencjk.org/~scz/ 关于计算机名的相关讨论 http://www.opencjk.org/~scz/windows/200603151441.txt Q: 我的电脑->属性->计算机名->计算机描述,我想改动这里,但它是灰色不可写的. A: 如果lanmanserver service未启用,就会这样.执行"net start srv"即可. Q: 我想修改所属工作组,但那里是灰色不可写的. A: 如果lanmanworks

  • linux下快速列出局域网中所有主机名(计算机名)的脚本

    最近有列出局域网中所有主机名的需求(SMB协议里的),但是findsmb命令总是列不全,搜了搜网上也没什么现成的解决方案,于是自己写了个python脚本 脚本会扫描局域网arp表中所有ip,并尝试解析其主机名,这样可以较为彻底地列出相关信息. 注意,运行这个脚本需要samba-common-bin和arp-scan这两个包,没有的请先apt install它们. 用法:直接运行或用python3运行,然后输入需要扫描的网卡名(network interface)(不知道的运行ifconfig可查

  • VBS中Run和Exec的区别

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

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

    @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

  • 如何用Python获取计算机名,ip地址,mac地址

    获取计算机名 # 获取计算机名,常用的方法有三种,但最常用的是第一种 import os import socket # method one name = socket.gethostname() print(name) # hanser # method two name = os.popen("hostname").read() print(name) # hanser # method three name = os.environ.get("COMPUTERNAME

  • 修改计算机名或IP后Oracle10g服务无法启动的解决方法

    遇到的问题,问题产生原因不详.症状为,windows服务中有一项oracle服务启动不了,报出如下错误. Windows 不能在 本地计算机 启动 OracleDBConsoleorcl .有关更多信息,查阅系统事件日志.如果这是非 Microsoft 服务,请与服务厂商联系,并参考特定服务错误代码 2 后从网上寻得一贴,问题解决,解决原因不详,反正就是解决了. 问题描述:学校机房母盘安装Oracle10g传输到其它机器,母盘的Oracle可以正常使用,而其它机器启动Oracle服务时无法启动.

  • CI框架中数据库操作函数$this->db->where()相关用法总结

    本文实例总结了CI框架中数据库操作函数$this->db->where()相关用法.分享给大家供大家参考,具体如下: CI 框架数据库操作函数 this->db->where() 的使用 1) $this->db->where('MATCH (field) AGAINST ("value")', NULL, FALSE) 如果把$this->db->where() 接受可选的第三个参数设置为 FALSE, CodeIgniter 将不会为

  • vc获取计算机名和ip地址的方法

    本文实例讲述了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);

  • VBS中的SetLocale函数到底有什么用?

    VBS文档中对SetLocale函数的描述: 设置全球区域设置,并返回以前的区域设置. 一个 locale 是用户参考信息集合,与用户的语言.国家/地区和文化传统有关.该 locale 决定键盘布局.字母排序顺序和日期.时间.数字与货币格式. 简单的说,就是VBS中的一些函数的返回值与当前的locale相关,比如说MonthName函数: 复制代码 代码如下: Dim a(12), b(12) 'By Demon SetLocale "zh-cn" For i = 1 To 12 a(

  • Sql查询MySql数据库中的表名和描述表中字段(列)信息

    下面为大家介绍利用SQL查询语句获取Mysql数据库中表的表名,表描述.字段ID.字段名.数据类型.长度.精度.是否可以为null.默认值.是否自增.是否是主键.列描述 一.查询表信息(表名/表描述) SELECT table_name name,TABLE_COMMENT value FROM INFORMATION_SCHEMA.TABLES WHERE table_type='base table' and table_schema = '数据库名' order by table_name

随机推荐