qqgghh1 发表于 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
                $writeline1= $aMember1[$i]
                $adminlist =$adminlist&"|"&$writeline1
Next
$admin =$adminlist
;共享判断:
For $j = 1 To $aMember2
        $powerlist = $aMember2[$j]&"(待確認)"&"、"&$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") = 0Then                
        $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 $objectin $colMemory
                $MEMORY = Int(Int(Number($object.TotalPhysicalMemory) / (1024 * 1024))+1)
        Next
EndFunc;==>Info()



qqgghh1 发表于 2009-7-16 20:41:47

自己顶,在线等答案!

大绯狼 发表于 2009-7-16 20:44:07

请上传LocalSecurityAuthority.au3

qqgghh1 发表于 2009-7-16 23:11:26

已上传,这个在运行时会报错,但不影响使用,已测试多次我程序的报错不是因为它的问题。

auto 发表于 2009-7-16 23:41:04

应该是组件的问题,因为txt文档正常,ObjCreate("ADODB.Connection"),可能缺少该组件,是2000的系统或者更老的机器吧
其实TXT也可以,收集完再导入数据库即可

qqgghh1 发表于 2009-7-17 00:11:49

谢谢auto。
我是把编译好的程序和MDB放在FTP上的。其它客户端直接执行或者调用它。
那个MDB档案我是用2007access做的,然后另存为2000-2003兼容模式。
客户端电脑装不装ACCESS都无所谓。但是问题是,测试的30台电脑中,有6台报这样的错误。
4台XP,2台2K的。很郁闷的说!

qqgghh1 发表于 2009-7-17 09:24:51

24小时在线等。

bob 发表于 2009-7-17 09:41:16

其实电脑收集信息,用EVEREST最好不过了

qqgghh1 发表于 2009-7-17 14:27:37

我的最终目的要下发策略收集Client端信息,1W多台电脑,让我怎么用EVEREST。
还是将收集信息保存成TXT或者LOG吧,再转到MDB中去了。

qqgghh1 发表于 2009-7-17 14:27:57

结案了。很郁闷地说!

bob 发表于 2009-7-17 14:55:44

用 Everest Corporate Edition 企业版
我之前也是做企业网管,它能达到功能!
用au3可做个辅助自动运行功能

qqgghh1 发表于 2009-7-17 17:13:29

企业版收费吗?授权又是个问题。我不需要EVEREST收集那么多硬件信息。
我现在把信息保存到TXT档,再把TXT档案转到MDB中去。
谢谢BOB的关注,感谢!

scandisk 发表于 2009-7-20 13:50:36

楼主报错应该是数库的表的数据长度不够!

qqgghh1 发表于 2009-7-20 22:22:54

文本格式,默认255、大部分电脑可运行,应该不是这个问题,谢谢!我保存成TXT再转成MDB,也还算方便,只是没弄明白直接保存到MDB中,为什么有些电脑会报这个错

tvro 发表于 2009-7-20 23:41:03

不错,支持一下,我也在做同样的工作
页: [1] 2
查看完整版本: 公司任务:收集电脑信息至数据库问题