Board logo

标题: [问题求助] [已解决]WSH的远程脚本为何出错 [打印本页]

作者: happyxxdhaha    时间: 2015-3-3 21:53     标题: [已解决]WSH的远程脚本为何出错

本帖最后由 happyxxdhaha 于 2015-4-2 21:53 编辑

如下是《Windows脚本技术》中关于远程脚本的示例代码,为什么我运行后,会出现错误:"ActiveX部件不能创建对象。",XP,Win7下都不行,请大家帮帮我。个人觉得,这段代码实现的功能,类似于at \\computername,已知at都可以执行成功,为什么这段代码不行呢,远程运行脚本还需要满足什么条件呢?
  1. Set oController = CreateObject("WSHController")
  2. Set oProcess = oController.CreateScript("test.vbs", "192.168.1.2")
  3. oProcess.Execute
  4. While oProcess.Status <> 2
  5.    WScript.Sleep 100
  6. Wend
  7. WScript.Echo "Done"
复制代码

作者: czjt1234    时间: 2015-3-19 11:26

要连接到远程计算机

一、
连接远程计算机用的账户名必须有管理员权限
即该账户名必须在远程计算机的Administrators用户组里

默认是以本机当前登录的账户名和密码连接远程计算机
如果要以其他账户名连接,可以用cmd命令runas

二、
远程计算机要在"组策略"里修改网络访问的模式
运行gpedit.msc→计算机配置→Windows设置→本地策略→安全选项→网络访问:本地账户的共享和安全模式
将 "仅来宾 - 本地用户以来宾身份验证" 改为 "经典 - 本地用户以自己的身份验证"
winxpsp3默认是来宾模式,win2003sp2 win7sp1默认是经典模式

三、
如果远程计算机有防火墙,那么还必须在防火墙设置里开启相应的端口
查看计算机连接使用的端口,可用cmd命令netstat -n

四、
远程计算机必须修改注册表
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings]
"Remote"="1"

五、
如果出现"ActiveX 组件不能创建对象"的错误消息
在远程计算机上运行
Wscript.exe -regserver

经测试
本机winxpsp3连接远程winxpsp3,需要在远程计算机上运行该命令
本机winxpsp3连接远程win2003sp2,不需要运行该命令

六、
WshController.CreateScript()方法只连接远程计算机,不执行指定的脚本文件
WshRemote.Execute()方法负责在远程计算机上执行指定的脚本文件
可以远程执行.vbs .wsf .js文件,不能执行.bat .exe文件

比如参数值为"C:\1.vbs"
如果本机有该文件,则可以执行
如果本机没有该文件,则不可以执行
与远程计算机有无该文件无关

又比如参数值为UNC路径"\\a002\C\1.vbs"
如果本机的网上邻居可以访问该UNC路径,则可以执行
如果本机的网上邻居不可以访问该UNC路径,则不可以执行
与远程计算机是否可以访问该UNC路径无关

如果该1.vbs负责创建文件或文件夹,则只在远程计算机上创建,本机不会创建
因为1.vbs是在远程计算机上执行的
远程脚本不支持输入输出语句Inputbox() Msgbox(),否则报错




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2