永发信息网

一个获取客户端硬件信息的VBscript程序,如何用asp实现?

答案:5  悬赏:40  手机版
解决时间 2021-04-25 07:40

下面这段vbscript程序代码可以获取客户端硬件信息,只需粘贴的到文本文档里,另存为:a.vbs,运行,就会自动生成一个1.txt,我现在想用asp实现,于是前后加<%%>,将“Set f1 = fso.CreateTextFile("1.txt")”改为了“Set f1 = fso.CreateTextFile(server.MapPath("/")&"\1.txt")”,运行了一下,特慢,最后只得到了一个空文件,而没有获取到信息。

为什么vbs文件可以,而asp不行呢?asp使用的就是vbs脚本啊~请高手明示!

'--------------------------------------------------------
On Error Resume Next
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.CreateTextFile("1.txt")
strComputer = "."
f1.write (strComputer)
If Err.Description = "" Then
'收集计算机用户信息
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem", , 48)
J = 0
For Each objItem In colItems
If J = 0 Then f1.write (Trim(objItem.Name)) Else f1.write ("," & Trim(objItem.Name)) '收集本地计算机名称,若收集计算机登录帐户的话则使用objItem.UserName
J = J + 1
Next
'收集CPU信息
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor", , 48)
J = 1
For Each objItem In colItems
If J = 0 Then f1.write (Trim(objItem.Name)) Else f1.write ("," & Trim(objItem.Name))
J = J + 1
Next
'收集内存信息
'收集内存总容量
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem", , 48)
J = 2
For Each objItem In colItems
If J = 0 Then f1.write (Trim(objItem.TotalPhysicalMemory)) Else f1.write ("," & Trim(objItem.TotalPhysicalMemory))
J = J + 1
Next
'收集内存外频和数量信息
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_PhysicalMemory", , 48)
J = 3
For Each objItem In colItems
If J = 0 Then f1.write (Trim(objItem.Description) & (objItem.DeviceLocator) & (objItem.Speed)) Else f1.write ("," & Trim(objItem.Description) & (objItem.DeviceLocator) & "," & Trim(objItem.Speed))
J = J + 1
Next
'收集显卡信息
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_VideoController", , 48)
J = 4
For Each objItem In colItems
If J = 0 Then f1.write (Trim(objItem.Caption) & (objItem.VideoModeDescription)) Else f1.write ("," & Trim(objItem.Caption) & (objItem.VideoModeDescription))
J = J + 1
Next
'收集硬盘基本信息
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_DiskDrive", , 48)
J = 5
For Each objItem In colItems
If J = 0 Then f1.write (Trim(objItem.Caption) & (objItem.Size)) Else f1.write ("," & Trim(objItem.Caption) & "," & (objItem.Size))
J = J + 1
Next
'收集声卡信息
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_SoundDevice", , 48)
J = 6
For Each objItem In colItems
If J = 0 Then f1.write (Trim(objItem.ProductName)) Else f1.write ("," & Trim(objItem.ProductName))
J = J + 1
Next
'收集网卡信息
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkAdapter", , 48)
J = 7
For Each objItem In colItems
If J = 0 Then f1.write (Trim(objItem.Description) & (objItem.MACAddress)) Else f1.write ("," & Trim(objItem.ProductName) & "," & (objItem.MACAddress))
J = J + 1
Next
'收集软驱信息
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_FloppyDrive", , 48)
J = 8
For Each objItem In colItems
If J = 0 Then f1.write (Trim(objItem.Caption)) Else f1.write ("," & Trim(objItem.Caption))
J = J + 1
Next
'收集CDROM信息
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_CDROMDrive", , 48)
J = 9
For Each objItem In colItems
If J = 0 Then f1.write (Trim(objItem.Name)) Else f1.write ("," & Trim(objItem.Name))
J = J + 1
Next
End If
f1.WriteLine ("")
f1.Close

最佳答案

这个程序的情况有点特殊


给asp合适的权限 就可以运行



a.vbs可以运行是因为你是以较高权限的用户运行的。


专成asp程序后 通常运行权限要低于user 权限 可以说是最低的权限 所以运行时会出现权限不足的错误,


之所以特变慢是因为程序忽略了错误但陷入无限循环,所以特别慢并且生成的是个空文件。



给asp权限:iis中给asp权限的方法实际就是设置iis站点的运行身份,在你的机器上创建一个管理员账号记住账号密码 给他响应的权限比如设置为管理员角色,然后设置iis站点的运行身份(输入刚才的用户名密码)


站点/属性/目录安全性/身份验证和访问控制 编辑/



设置完重启iis就可以了







全部回答
这个我做过,而且用也很好。直接在htm文件里,使用vbscript调用wmi控件读取的,也可以用jscript调用wmi收集信息。不管是用vbscript还是jscript在客户端收集硬件信息,客户端必须将该网站设置为信 任站点。

应该是不行的,你的代码只在服务端执行,就是取到的都是你服务器的参数,远程客户端的参数是取不到的....如果你想取到要做个OCX控件.在客户端安装......或者用WINDOWS自带的控件

asp 是服务器端执行 vbs 是客户端执行的
我用过
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
这个卡通是谁
我只是想望了她 但却伤害了她
我电脑玩地下城与勇士怎么有时候卡有时候不卡
怎样才能找到前行的路?
手机服务密码改了一次又忘记了怎么办
为什么没有S车追魂者卖哦?
提问被选为精华的提问 有奖励么?
男人少了女人就不能活吗?
艾弗森什么时候代表76人上场
2009NEPCS初三试题答案
澳大利亚旅游注意事项,去澳大利亚旅游注意事
侧岭收费站这个地址在什么地方,我要处理点事
农历九三年十一月十七是什么星座
為什麼看不到QQ好友的農場
sc2下载完了玩不了啊
推荐资讯
魔怪SRL1每秒时速是多少?
我有两个QQ号,忘记了密码和密保,帮我申诉要
火影忍着335级今天什么时候放映?
用QQ和别人聊天时用什么办法不报告自己正确位
遇到一个不好的同事怎么办 (把自己的责任推
现在诛仙2怎么个玩法?
北大青鸟一年学费多少?
绝版卡片不用魔力一天可以换几张
碣石不低于05年的进口豪爵太子卖多少钱?
本人想换系统配置
阴历十月初十是什么星座
怎样改诺基亚5200的代码能让它后台运行!高手
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?