找回密码
 加入
搜索
查看: 4517|回复: 15

公司任务:收集电脑信息至数据库问题

[复制链接]
发表于 2009-7-16 19:20:09 | 显示全部楼层 |阅读模式
本帖最后由 qqgghh1 于 2009-7-17 14:30 编辑

小弟拜求各位大大:
如下程序,收集电脑信息保存到mdb数据库中,在测试的30台电脑中有6台报错,其余有正常数据。但保存到TXT档案中,都没有报错。
帮我看看是啥原因导致错误啊,截图及文件都上传至附件。
#include <LocalSecurityAuthority.au3>
Global $feifaruanjian 
Global $ipaddress,$Cumputername,$os,$OSLANG,$mac,$feifaruanjian,$admin,$usb,$share,$defaultshare,$autoplay,$cpu,$MEMORY,$Board,$logonname
Local $mdb_data_path=@ScriptDir&"\db.mdb"
Local $tblname="pc_info"
$ipaddress = @IPAddress1
$Cumputername = @ComputerName
$os = @OSVersion&"_"&@OSServicePack
$OSLANG = @OSLang
$logonname = @UserName

;获取MAC地址
$objWMIService = objGet("winmgmts:\" & @ComputerName & "\root\cimv2")
$colItems = $objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
For $objItem in $colItems
    If StringLeft($objItem.MACAddress,2) = 00 Then
                $mac = $objItem.MACAddress
    EndIf
Next
;获取硬件信息
info()
;获取非法软件清单
ckfeifaruanjian()
;获取本机管控状态,Y则表示该项目已管控,N表示未管控
;1.admin清单
$aMember1 = _LsaLocalGroupGetMembers("administrators")
$aMember2 = _LsaLocalGroupGetMembers("POWER USERS")
$adminlist = ""
$powerlist = ""
For $i = 1 To $aMember1[0][0]
                $writeline1  = $aMember1[$i][0]
                $adminlist =$adminlist&"|"&$writeline1
Next
$admin =$adminlist
;共享判断:
For $j = 1 To $aMember2[0][0]
        $powerlist = $aMember2[$j][0]&"(待確認)"&"、"&$powerlist
Next
If $powerlist <> "" Then $share = "N"
If $powerlist = "" Then $share = "Y"

;默认共享判断
$reg = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters","AutoShareWks")
If String($reg) = "0" Then
        $defaultshare = "Y"
ElseIf String($reg) = "" Then
        $defaultshare = "N"
EndIf        

;usb判断
If FileExists(@WindowsDir&"\inf\usbstor.inf") = 1 Or RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR","start") = 00000003 Then   
        $usb = "N"
ElseIf FileExists(@WindowsDir&"\inf\usbstor.inf") = 0  Then                 
        $usb = "Y"
EndIf

;自动播放判断
If RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer","NoDriveTypeAutoRun") <>255 Then 
        $autoplay = "N"
Else
        $autoplay = "Y"
EndIf

;---------------------------------------------------------------------------------------------------------
;数据库操作
$addfld = ObjCreate("ADODB.Connection")
$addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & $mdb_data_path & ";Jet Oledb:Database Password= 123456")
$addfld.Execute("insert into pc_info(ip,Cumputername,OS,OSLANG,MAC,MEMORY,cpu,Board,feifaruanjian,usb,share,defaultshare,autoplay,admin,logonname) values('"&$ipaddress&"','"&$Cumputername&"','"&$os&"','"&$OSLANG&"','"&$mac&"','"&$MEMORY&"','"&$cpu&"','"&$Board&"','"&$feifaruanjian&"','"&$usb&"','"&$share&"','"&$defaultshare&"','"&$autoplay&"','"&$admin&"','"&$logonname&"')")
$addfld.close
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;若不用数据库操作代码,用下面的代码保存到TXT档案中,没有问题。
;FileWriteLine(@ScriptDir&"\12.txt",$ipaddress&"|"&$Cumputername&"|"&$os&"|"&$OSLANG&"|"&$mac&"|"&$MEMORY&"|"&$cpu&"|"&$Board&"|"&$feifaruanjian&"|"&$usb&"|"&$share&"|"&$defaultshare&"|"&$autoplay&"|"&$admin&"|"&$logonname)
;常见非法软件清单
Func ckfeifaruanjian()
        If FileExists(@ProgramFilesDir &"\WinRAR") Then $feifaruanjian = "WinRAR"
        If FileExists(@HomeDrive &"\chenhu2") Then $feifaruanjian = $feifaruanjian&"|"&"陳橋五筆輸入法"
        If FileExists(@ProgramFilesDir &"\Kingsoft") Then $feifaruanjian = $feifaruanjian&"|"&"金山公司出品的軟件"
        If FileExists(@ProgramFilesDir &"\ACD Systems\ACDSee") Then $feifaruanjian = $feifaruanjian&"|"&"ACDSee系列產品"
        If FileExists(@ProgramFilesDir &"\Inventec\Dreye") Then $feifaruanjian = $feifaruanjian&"|"&"翻譯軟件:譯典通"
        If FileExists(@ProgramFilesDir &"\Super Rabbit") Then $feifaruanjian = $feifaruanjian&"|"&"魔法兔子" 
        If FileExists(@ProgramFilesDir &"\Rising") Then $feifaruanjian = $feifaruanjian&"|"&"瑞星公司出品的軟件"
        If FileExists(@ProgramFilesDir &"\Wopti") Then $feifaruanjian = $feifaruanjian&"|"&"優化大師"        
        If $feifaruanjian ="" Then $feifaruanjian = "NULL"
EndFunc
;内存,CPU,主板信息
Func info()
        Global $objWMIService,$colBios,$colBoard,$colSettings,$colMemory,$colCPU,$colVideoinfo,$colSound ,$colNIC 
        Local $object,$objOperatingSystem
        $objWMIService = objget("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
        $colBoard = $objWMIService.ExecQuery("SELECT * FROM Win32_BaseBoard")
        $colMemory = $objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
        $colCPU = $objWMIService.ExecQuery("Select * from CIM_Processor")
        For $object in $colCPU
                $cpu = StringStripWS($object.Name,1)
        Next

        For $object in $colBoard
                $Board = $object.Product
        Next

        for $object  in $colMemory
                $MEMORY = Int(Int(Number($object.TotalPhysicalMemory) / (1024 * 1024))+1)
        Next
EndFunc  ;==>Info()

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1贡献 +3 收起 理由
lynfr8 + 3 好问题!

查看全部评分

 楼主| 发表于 2009-7-16 20:41:47 | 显示全部楼层
自己顶,在线等答案!
发表于 2009-7-16 20:44:07 | 显示全部楼层
请上传LocalSecurityAuthority.au3
 楼主| 发表于 2009-7-16 23:11:26 | 显示全部楼层
已上传,这个在运行时会报错,但不影响使用,已测试多次我程序的报错不是因为它的问题。
发表于 2009-7-16 23:41:04 | 显示全部楼层
应该是组件的问题,因为txt文档正常,ObjCreate("ADODB.Connection"),可能缺少该组件,是2000的系统或者更老的机器吧
其实TXT也可以,收集完再导入数据库即可
 楼主| 发表于 2009-7-17 00:11:49 | 显示全部楼层
谢谢auto。
我是把编译好的程序和MDB放在FTP上的。其它客户端直接执行或者调用它。
那个MDB档案我是用2007access做的,然后另存为2000-2003兼容模式。
客户端电脑装不装ACCESS都无所谓。但是问题是,测试的30台电脑中,有6台报这样的错误。
4台XP,2台2K的。很郁闷的说!
 楼主| 发表于 2009-7-17 09:24:51 | 显示全部楼层
24小时在线等。
发表于 2009-7-17 09:41:16 | 显示全部楼层
其实电脑收集信息,用EVEREST最好不过了
 楼主| 发表于 2009-7-17 14:27:37 | 显示全部楼层
我的最终目的要下发策略收集Client端信息,1W多台电脑,让我怎么用EVEREST。
还是将收集信息保存成TXT或者LOG吧,再转到MDB中去了。
 楼主| 发表于 2009-7-17 14:27:57 | 显示全部楼层
结案了。很郁闷地说!
发表于 2009-7-17 14:55:44 | 显示全部楼层
用 Everest Corporate Edition 企业版
我之前也是做企业网管,它能达到功能!
用au3可做个辅助自动运行功能
 楼主| 发表于 2009-7-17 17:13:29 | 显示全部楼层
企业版收费吗?授权又是个问题。我不需要EVEREST收集那么多硬件信息。
我现在把信息保存到TXT档,再把TXT档案转到MDB中去。
谢谢BOB的关注,感谢!
发表于 2009-7-20 13:50:36 | 显示全部楼层
楼主报错应该是数库的表的数据长度不够!
 楼主| 发表于 2009-7-20 22:22:54 | 显示全部楼层
文本格式,默认255、大部分电脑可运行,应该不是这个问题,谢谢!我保存成TXT再转成MDB,也还算方便,只是没弄明白直接保存到MDB中,为什么有些电脑会报这个错
发表于 2009-7-20 23:41:03 | 显示全部楼层
不错,支持一下,我也在做同样的工作
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-10-3 04:42 , Processed in 0.106741 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表