Kalau anda bekerja menjadi tenaga IT di sebuah perusahaan yang mengutamakan penggunaan software yang legal, pasti anda akan kenal dengan software gratisan WinAudit. WinAudit adalah software sederhana yang digunakan untuk mendata informasi sebuah komputer termasuk software yang terinstall di komputer tersebut. Biasanya perusahaan yang beritikad baik terhadap HKI akan ikut Piagam HKI yang diselenggarakan oleh BSA bekerjasama dengan Kepolisian Republik Indonesia.
Informasi lengkap tentang cara pendaftaran Piagam HKI bisa diakses melalui situs resminya http://piagam-hki.org/. Sedangkan informasi tentang BSA serta merek software yang tergabung dalam BSA bisa dilihat di situs resminya http://www.bsa.org/country.aspx?sc_lang=id-ID (bahasa Indonesia).
BSA akan mengirimkan auditor untuk mengaudit semua komputer yang ada di perusahaan. Jika perusahaan tersebut bisa comply atau bisa membuktikan bahwa software yang digunakan legal dengan bukti-bukti lisensi, maka atas persetujuan piagam HKI, perusahaan tersebut akan diberikan reward berupa piagam HKI.
Hubungannya dengan hal tersebut, auditor yang dikirim untuk mengaudit komputer kadang-kadang menggunakan software WinAudit. Agar memudahkan kita dan auditor, sebaiknya kita harus melakukan internal audit dulu dan mempersiapkan dokumen lisensinya untuk diberikan kepada auditor nanti. Software gratisan yang bisa digunakan adalah winaudit.
Hasil pendataan winaudit bisa disimpan dengan berbagai macam tipe file termasuk file text (.txt). Satu komputer akan menghasilkan satu file hasil winaudit. Jika jumlah komputer yang diaudit cukup banyak, tentunya kita akan kesulitan membaca satu-satu file hasil winaudit tersebut dan menghitung jumlah softwarenya secara manual. Hal itu juga yang menjadi permasalahan saya waktu itu.
Untuk mempermudah penghitungan software hasil winaudit tersebut, akhirnya saya mencoba untuk membuat program kecil-kecilan di Microsoft Visual Basic 6.0 untuk membaca semua file hasil winaudit dan meng-importnya menjadi satu dalam file database agar lebih mudah untuk dioproses.
Berikut akan saya paparkan langkah-langkah yang saya pikirkan waktu membuat program tersebut.
Bismillahirrohmanirrohiim...!
Langkah Pertama: Mempersiapkan Database
Tentunya kita harus mempersiapkan databasenya terlebih dahulu sebagai tempat penyimpanan data hasil import dari file winaudit. Untuk menentukan field apa saja yang digunakan, bisa kita sesuaikan dengan kebutuhan dan mengacu pada file hasil winaudit. Untuk mempermudah, saya buat dan buka databasenya menggunakan script dalam sebuah module. Berikut adalah scriptnya:
'================
Option Explicit
'untuk buat database
Public XDBAuditReport As New ADOX.Catalog
Public XTblInstalledSoftware As New ADOX.Table
Public XTblInstalledPrograms As New ADOX.Table
Public XTblOperatingSystem As New ADOX.Table.
'untuk buka database
Public CnDBAuditReport As New ADODB.Connection
Public RsInstalledSoftware As New ADODB.Recordset
Public RsInstalledPrograms As New ADODB.Recordset
Public RsOperatingSystem As New ADODB.Recordset
Sub BuatDB(Alamatnya As String)
XDBAuditReport.Create "Provider=Microsoft.jet.oledb.4.0;data source=" & Alamatnya
XDBAuditReport.ActiveConnection = "Provider=Microsoft.jet.oledb.4.0;data source=" & Alamatnya
'=============================
'tabel tblInstalledSoftware
XTblInstalledSoftware.Name = "TblInstalledSoftware"
XTblInstalledSoftware.Columns.Append "No", adInteger 'buat auto number
XTblInstalledSoftware.Columns.Append "Komputer", adVarWChar, 30
XTblInstalledSoftware.Columns.Append "AuditDate", adVarWChar, 30
XTblInstalledSoftware.Columns.Append "SWName", adVarWChar, 100
XTblInstalledSoftware.Columns.Append "Version", adVarWChar, 16
XTblInstalledSoftware.Columns.Append "Installed", adVarWChar, 3
With XTblInstalledSoftware.Columns!No
Set .ParentCatalog = XDBAuditReport
.Properties("Autoincrement") = True 'AutoNumber.
End With
XDBAuditReport.Tables.Append XTblInstalledSoftware
'=============================
'=============================
'tabel tblInstalledPrograms
XTblInstalledPrograms.Name = "TblInstalledPrograms"
XTblInstalledPrograms.Columns.Append "No", adInteger 'buat auto number
XTblInstalledPrograms.Columns.Append "Komputer", adVarWChar, 30
XTblInstalledPrograms.Columns.Append "AuditDate", adVarWChar, 30
XTblInstalledPrograms.Columns.Append "SWName", adVarWChar, 100
XTblInstalledPrograms.Columns.Append "Vendor", adVarWChar, 100
XTblInstalledPrograms.Columns.Append "Version", adVarWChar, 100
XTblInstalledPrograms.Columns.Append "ProductLanguage", adVarWChar, 100
XTblInstalledPrograms.Columns.Append "InstallDate", adVarWChar, 100
XTblInstalledPrograms.Columns.Append "InstallLocation", adVarWChar, 200
XTblInstalledPrograms.Columns.Append "InstallSource", adVarWChar, 200
XTblInstalledPrograms.Columns.Append "InstallState", adVarWChar, 100
XTblInstalledPrograms.Columns.Append "AssignmentType", adVarWChar, 100
XTblInstalledPrograms.Columns.Append "PackageCode", adVarWChar, 100
XTblInstalledPrograms.Columns.Append "PackageName", adVarWChar, 100
XTblInstalledPrograms.Columns.Append "LocalPackage", adVarWChar, 100
XTblInstalledPrograms.Columns.Append "ProductID", adVarWChar, 100
XTblInstalledPrograms.Columns.Append "RegisteredCompany", adVarWChar, 100
XTblInstalledPrograms.Columns.Append "RegisteredOwner", adVarWChar, 100
XTblInstalledPrograms.Columns.Append "TimesUsed", adVarWChar, 100
XTblInstalledPrograms.Columns.Append "LastUsed", adVarWChar, 100
XTblInstalledPrograms.Columns.Append "ExecutablePath", adVarWChar, 200
XTblInstalledPrograms.Columns.Append "ExecutableVersion", adVarWChar, 100
XTblInstalledPrograms.Columns.Append "ExecutableDescription", adVarWChar, 100
XTblInstalledPrograms.Columns.Append "SoftwareID", adVarWChar, 100
With XTblInstalledPrograms.Columns!No
Set .ParentCatalog = XDBAuditReport
.Properties("Autoincrement") = True 'AutoNumber.
End With
XDBAuditReport.Tables.Append XTblInstalledPrograms
'=============================
'=============================
'tabel tblOperatingSystem
XTblOperatingSystem.Name = "tblOperatingSystem"
XTblOperatingSystem.Columns.Append "No", adInteger 'buat auto number
XTblOperatingSystem.Columns.Append "Komputer", adVarWChar, 30
XTblOperatingSystem.Columns.Append "AuditDate", adVarWChar, 30
XTblOperatingSystem.Columns.Append "OSName", adVarWChar, 100
XTblOperatingSystem.Columns.Append "Edition", adVarWChar, 100
XTblOperatingSystem.Columns.Append "InstallDate", adVarWChar, 100
XTblOperatingSystem.Columns.Append "RegisteredOwner", adVarWChar, 100
XTblOperatingSystem.Columns.Append "RegisteredOrganization", adVarWChar, 100
XTblOperatingSystem.Columns.Append "ProductID", adVarWChar, 100
XTblOperatingSystem.Columns.Append "MajorVersionNumber", adVarWChar, 100
XTblOperatingSystem.Columns.Append "MinorVersionNumber", adVarWChar, 100
XTblOperatingSystem.Columns.Append "BuildNumber", adVarWChar, 100
XTblOperatingSystem.Columns.Append "ServicePack", adVarWChar, 100
XTblOperatingSystem.Columns.Append "ServicePackVersion", adVarWChar, 100
XTblOperatingSystem.Columns.Append "PlusVersionNumber", adVarWChar, 100
XTblOperatingSystem.Columns.Append "DirectXVersion", adVarWChar, 100
XTblOperatingSystem.Columns.Append "WindowsDirectory", adVarWChar, 100
XTblOperatingSystem.Columns.Append "SystemDirectory", adVarWChar, 100
XTblOperatingSystem.Columns.Append "TemporaryDirectory", adVarWChar, 100
With XTblOperatingSystem.Columns!No
Set .ParentCatalog = XDBAuditReport
.Properties("Autoincrement") = True 'AutoNumber.
End With
XDBAuditReport.Tables.Append XTblOperatingSystem
'=============================
Set XDBAuditReport = Nothing
End Sub
Sub BukaDB(Alamatnya As String)
Dim strKonek As String
strKonek = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Alamatnya & ";Persist Security Info=False"
If CnDBAuditReport.State = 0 Then
CnDBAuditReport.CursorLocation = adUseClient
CnDBAuditReport.Open strKonek
End If
RsInstalledSoftware.Open "tblInstalledSoftware", CnDBAuditReport, adOpenKeyset, adLockOptimistic
RsInstalledPrograms.Open "tblInstalledPrograms", CnDBAuditReport, adOpenKeyset, adLockOptimistic
RsOperatingSystem.Open "tblOperatingSystem", CnDBAuditReport, adOpenKeyset, adLockOptimistic
End Sub
'===============================
Langkah Kedua: Mengenali Pola Penanda File
Kok mengenali pola? Yup....mengenali pola file text hasil winaudit tersebut. Coba perhatikan beberapa baris awal file hasil winaudit berikut ini:
-------------
| ________ |
-------------
Computer Audit :: 5/20/2010 10:42:41 AM
Installed Software
Active Setup
-----------------------------------------------------------------------------
| Name | Version | Installed |
-----------------------------------------------------------------------------
| .NET Framework | 2,0,50727,0 | |
| Active Directory Service Interface | 5,0,00,0 | Yes |
...dst
Kalau kita perhatikan pada baris pertama sampai baris ketiga, terdapat beberapa karakter garis (- | _ ). Kalau dilihat di semua file hasil text winaudit pasti terdapat karakter tersebut. Karakter inilah yang saya gunakan untuk mengenali apakah file text tersebut adalah file hasil Winaudit.
Sehingga saya merasa perlu membuat function untuk mengecek (memeriksa) apakah file yang akan diproses adalah file hasil Winaudit. Berikut script seadanya:
'===================
Function CekFileAudit(filenya As String) As Boolean
Dim Textnya As String
Dim Hasilnya As String
Dim JmlGrsMin As Integer
Dim I As Integer
I = 1
Open filenya For Input As I
While Not EOF(I)
Line Input #I, Textnya
If I = 1 Then
If Trim(Left(Textnya, 15)) <> "-------------" Then CekFileAudit = False: Close I: Exit Function
ElseIf I = 2 Then
If Trim(Left(Textnya, 15)) <> "| ________ |" Then CekFileAudit = False: Close I: Exit Function
ElseIf I = 3 Then
If Trim(Left(Textnya, 15)) <> "-------------" Then CekFileAudit = False: Close I: Exit Function
End If
CekFileAudit = True
Close I
Exit Function
Wend
Close I
End Function
'===========================================================
Script tersebut akan memeriksa pada baris pertama sampai baris ketiga, apakah ada karakter yang menjadi ciri khas file hasil winaudit. Jika ada, maka function tersebut akan bernilai TRUE tetapi jika tidak ada, maka akan bernilai FALSE.
Langkah Ketiga: Mengenali Pola Untuk Pembacaan Data
Dengan mendeteksi karakter-karakter yang digunakan dalam file hasil winaudit tersebut (seperti pengenalan pola pada penanda file), berikut adalah script yang saya gunakan untuk membaca datanya:
'======================
'untuk mengambil data Installed Software
Sub BacaInsSoft(filenya As String, NamaKomp As String)
Dim Textnya As String
Dim Hasilnya As String
Dim JmlGrsMin As Integer
Dim TglAudit As String
Dim Mulai As Boolean
JmlGrsMin = 0
Dim I As Integer
I = 1
Open filenya For Input As I
While Not EOF(I)
langsung:
Line Input #I, Textnya
If Trim(Left(Textnya, 15)) = "Computer Audit" Then
TglAudit = Trim(Mid(Textnya, 19, Len(Textnya) - 17))
End If
If Trim(Textnya) = "Installed Software" Then
Mulai = True
GoTo langsung
End If
If Mulai = True Then
'pengecekan garis pembatas
If Trim(Left(Textnya, 15)) = "---------------" Then
JmlGrsMin = JmlGrsMin + 1
ElseIf JmlGrsMin = 3 Then
'sudah sampai batas akhir datanya
Close I
Exit Sub
ElseIf JmlGrsMin = 2 Then
'mulai pembacaan data disimpan ke database
Dim flName As String
Dim flVersion As String
Dim flInstalled As String
Dim Panjang As Integer
Panjang = Len(Textnya)
If Panjang = 0 Then GoTo langsung
flName = Mid(Textnya, 2, Panjang - 33)
flVersion = Mid(Textnya, Len(flName) + 4, 16)
flInstalled = Mid(Textnya, Len(flName) + Len(flVersion) + 5, 12)
'simpan ke database
'diasumsikan sudah ada pengecekan nama komputer yang sama
With RsInstalledSoftware
.AddNew
'field(0) auto increment
.Fields(1).Value = IIf(IsNull(Trim(NamaKomp)) = True, "", Trim(NamaKomp))
.Fields(2).Value = IIf(IsNull(Trim(TglAudit)) = True, "", Trim(TglAudit))
.Fields(3).Value = IIf(IsNull(Trim(flName)) = True, "", Trim(flName))
.Fields(4).Value = IIf(IsNull(Trim(flVersion)) = True, "", Trim(flVersion))
.Fields(5).Value = IIf(IsNull(Trim(flInstalled)) = True, "", Trim(flInstalled))
.Update
End With
'Hasilnya = Hasilnya & flName & "#" & flVersion & "#" & flInstalled & vbCrLf
End If
End If
Wend
Close I
End Sub
'==================
'untuk mengambil data Installed Programs
Sub BacaInsProgs(filenya As String, NamaKomp As String)
Dim Textnya As String
Dim Hasilnya As String
Dim JmlGrsMin As Integer
Dim TglAudit As String
Dim Mulai As Boolean
Dim Kolom As Integer
Dim flName As String
Dim flVendor As String
Dim flVersion As String
Dim flProductLanguage As String
Dim flInstallDate As String
Dim flInstallLocation As String
Dim flInstallSource As String
Dim flInstallState As String
Dim flAssignmentType As String
Dim flPackageCode As String
Dim flPackageName As String
Dim flLocalPackage As String
Dim flProductID As String
Dim flRegisteredCompany As String
Dim flRegisteredOwner As String
Dim flTimesUsed As String
Dim flLastUsed As String
Dim flExecutablePath As String
Dim flExecutableVersion As String
Dim flExecutableDescription As String
Dim flSoftwareID As String
JmlGrsMin = 0
Kolom = 1
Dim I As Integer
I = 1
Open filenya For Input As I
While Not EOF(I)
langsung:
Line Input #I, Textnya
If Trim(Left(Textnya, 15)) = "Computer Audit" Then
TglAudit = Trim(Mid(Textnya, 19, Len(Textnya) - 17))
End If
If Trim(Textnya) = "Installed Programs" Then
Mulai = True
GoTo langsung
End If
If Trim(Textnya) = "Software Updates" Then
Mulai = False
Close I
Exit Sub
End If
'sejak tanda pertama
If Mulai = True Then
'pengecekan garis pembatas
If Trim(Left(Textnya, 15)) = "---------------" Then
JmlGrsMin = JmlGrsMin + 1
ElseIf JmlGrsMin = 4 Then
'sudah sampai batas akhir datanya
'simpan ke database
'diasumsikan sudah ada pengecekan nama komputer yang sama
With RsInstalledPrograms
.AddNew
'field(0) auto increment
.Fields(1).Value = IIf(IsNull(Trim(NamaKomp)) = True, "", Trim(NamaKomp))
.Fields(2).Value = IIf(IsNull(Trim(TglAudit)) = True, "", Trim(TglAudit))
.Fields(3).Value = IIf(IsNull(Trim(flName)) = True, "", Trim(flName))
.Fields(4).Value = IIf(IsNull(Trim(flVendor)) = True, "", Trim(flVendor))
.Fields(5).Value = IIf(IsNull(Trim(flVersion)) = True, "", Trim(flVersion))
.Fields(6).Value = IIf(IsNull(Trim(flProductLanguage)) = True, "", Trim(flProductLanguage))
.Fields(7).Value = IIf(IsNull(Trim(flInstallDate)) = True, "", Trim(flInstallDate))
.Fields(8).Value = IIf(IsNull(Trim(flInstallLocation)) = True, "", Trim(flInstallLocation))
.Fields(9).Value = IIf(IsNull(Trim(flInstallSource)) = True, "", Trim(flInstallSource))
.Fields(10).Value = IIf(IsNull(Trim(flInstallState)) = True, "", Trim(flInstallState))
.Fields(11).Value = IIf(IsNull(Trim(flAssignmentType)) = True, "", Trim(flAssignmentType))
.Fields(12).Value = IIf(IsNull(Trim(flPackageCode)) = True, "", Trim(flPackageCode))
.Fields(13).Value = IIf(IsNull(Trim(flPackageName)) = True, "", Trim(flPackageName))
.Fields(14).Value = IIf(IsNull(Trim(flLocalPackage)) = True, "", Trim(flLocalPackage))
.Fields(15).Value = IIf(IsNull(Trim(flProductID)) = True, "", Trim(flProductID))
.Fields(16).Value = IIf(IsNull(Trim(flRegisteredCompany)) = True, "", Trim(flRegisteredCompany))
.Fields(17).Value = IIf(IsNull(Trim(flRegisteredOwner)) = True, "", Trim(flRegisteredOwner))
.Fields(18).Value = IIf(IsNull(Trim(flTimesUsed)) = True, "", Trim(flTimesUsed))
.Fields(19).Value = IIf(IsNull(Trim(flLastUsed)) = True, "", Trim(flLastUsed))
.Fields(20).Value = IIf(IsNull(Trim(flExecutablePath)) = True, "", Trim(flExecutablePath))
.Fields(21).Value = IIf(IsNull(Trim(flExecutableVersion)) = True, "", Trim(flExecutableVersion))
.Fields(22).Value = IIf(IsNull(Trim(flExecutableDescription)) = True, "", Trim(flExecutableDescription))
.Fields(23).Value = IIf(IsNull(Trim(flSoftwareID)) = True, "", Trim(flSoftwareID))
.Update
End With
'reset jmlgrsmin
JmlGrsMin = 0
ElseIf JmlGrsMin = 2 Then
'mulai pembacaan data
Dim Panjang As Integer
Panjang = Len(Textnya)
If Panjang = 0 Then GoTo langsung
If Kolom = 1 Then
flName = Trim(Mid(Textnya, 28, Panjang - 28))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flName & "#"
ElseIf Kolom = 2 Then
flVendor = Trim(Mid(Textnya, 28, Panjang - 28))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flVendor & "#"
ElseIf Kolom = 3 Then
flVersion = Trim(Mid(Textnya, 28, Panjang - 28))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flVersion & "#"
ElseIf Kolom = 4 Then
flProductLanguage = Trim(Mid(Textnya, 28, Panjang - 28))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flProductLanguage & "#"
ElseIf Kolom = 5 Then
flInstallDate = Trim(Mid(Textnya, 28, Panjang - 28))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flInstallDate & "#"
ElseIf Kolom = 6 Then
flInstallLocation = Trim(Mid(Textnya, 28, Panjang - 28))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flInstallLocation & "#"
ElseIf Kolom = 7 Then
flInstallSource = Trim(Mid(Textnya, 28, Panjang - 28))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flInstallSource & "#"
ElseIf Kolom = 8 Then
flInstallState = Trim(Mid(Textnya, 28, Panjang - 28))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flInstallState & "#"
ElseIf Kolom = 9 Then
flAssignmentType = Trim(Mid(Textnya, 28, Panjang - 28))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flAssignmentType & "#"
ElseIf Kolom = 10 Then
flPackageCode = Trim(Mid(Textnya, 28, Panjang - 28))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flPackageCode & "#"
ElseIf Kolom = 11 Then
flPackageName = Trim(Mid(Textnya, 28, Panjang - 28))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flPackageName & "#"
ElseIf Kolom = 12 Then
flLocalPackage = Trim(Mid(Textnya, 28, Panjang - 28))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flLocalPackage & "#"
ElseIf Kolom = 13 Then
flProductID = Trim(Mid(Textnya, 28, Panjang - 28))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flProductID & "#"
ElseIf Kolom = 14 Then
flRegisteredCompany = Trim(Mid(Textnya, 28, Panjang - 28))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flRegisteredCompany & "#"
ElseIf Kolom = 15 Then
flRegisteredOwner = Trim(Mid(Textnya, 28, Panjang - 28))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flRegisteredOwner & "#"
ElseIf Kolom = 16 Then
flTimesUsed = Trim(Mid(Textnya, 28, Panjang - 28))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flTimesUsed & "#"
ElseIf Kolom = 17 Then
flLastUsed = Trim(Mid(Textnya, 28, Panjang - 28))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flLastUsed & "#"
ElseIf Kolom = 18 Then
flExecutablePath = Trim(Mid(Textnya, 28, Panjang - 28))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flExecutablePath & "#"
ElseIf Kolom = 19 Then
flExecutableVersion = Trim(Mid(Textnya, 28, Panjang - 28))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flExecutableVersion & "#"
ElseIf Kolom = 20 Then
flExecutableDescription = Trim(Mid(Textnya, 28, Panjang - 28))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flExecutableDescription & "#"
ElseIf Kolom = 21 Then
flSoftwareID = Trim(Mid(Textnya, 28, Panjang - 28))
'selesai pembacaan data
Kolom = 1
'Mulai = False
'Hasilnya = Hasilnya & flSoftwareID & vbCrLf
End If
End If
End If
Wend
Close I
Exit Sub
End Sub
'untuk mengambil data Operating System
Sub BacaOprSys(filenya As String, NamaKomp As String)
Dim Textnya As String
Dim Hasilnya As String
Dim JmlGrsMin As Integer
Dim TglAudit As String
Dim Mulai As Boolean
Dim Kolom As Integer
'======================
Dim flName As String '1
Dim flEdition As String '2
Dim flInstallDate As String '3
Dim flRegisteredOwner As String '4
Dim flRegisteredOrganization As String '5
Dim flProductID As String '6
Dim flMajorVersionNumber As String '7
Dim flMinorVersionNumber As String '8
Dim flBuildNumber As String '9
Dim flServicePack As String '10
Dim flServicePackVersion As String '11
Dim flPlusVersionNumber As String '12
Dim flDirectXVersion As String '13
Dim flWindowsDirectory As String '14
Dim flSystemDirectory As String '15
Dim flTemporaryDirectory As String '16
JmlGrsMin = 0
Kolom = 1
Dim I As Integer
I = 1
Open filenya For Input As I
While Not EOF(I)
langsung:
Line Input #I, Textnya
If Trim(Left(Textnya, 15)) = "Computer Audit" Then
TglAudit = Trim(Mid(Textnya, 19, Len(Textnya) - 17))
End If
If Trim(Textnya) = "Operating System" Then
Mulai = True
GoTo langsung
End If
'sejak tanda pertama
If Mulai = True Then
'pengecekan garis pembatas
If Trim(Left(Textnya, 15)) = "---------------" Then
JmlGrsMin = JmlGrsMin + 1
ElseIf JmlGrsMin = 3 Then
'sudah sampai batas akhir datanya
'simpan ke database
'diasumsikan sudah ada pengecekan nama komputer yang sama
With RsOperatingSystem
.AddNew
'field(0) auto increment
.Fields(1).Value = IIf(IsNull(Trim(NamaKomp)) = True, "", Trim(NamaKomp))
.Fields(2).Value = IIf(IsNull(Trim(TglAudit)) = True, "", Trim(TglAudit))
'===
.Fields(3).Value = IIf(IsNull(Trim(flName)) = True, "", Trim(flName))
.Fields(4).Value = IIf(IsNull(Trim(flEdition)) = True, "", Trim(flEdition))
.Fields(5).Value = IIf(IsNull(Trim(flInstallDate)) = True, "", Trim(flInstallDate))
.Fields(6).Value = IIf(IsNull(Trim(flRegisteredOwner)) = True, "", Trim(flRegisteredOwner))
.Fields(7).Value = IIf(IsNull(Trim(flRegisteredOrganization)) = True, "", Trim(flRegisteredOrganization))
.Fields(8).Value = IIf(IsNull(Trim(flProductID)) = True, "", Trim(flProductID))
.Fields(9).Value = IIf(IsNull(Trim(flMajorVersionNumber)) = True, "", Trim(flMajorVersionNumber))
.Fields(10).Value = IIf(IsNull(Trim(flMinorVersionNumber)) = True, "", Trim(flMinorVersionNumber))
.Fields(11).Value = IIf(IsNull(Trim(flBuildNumber)) = True, "", Trim(flBuildNumber))
.Fields(12).Value = IIf(IsNull(Trim(flServicePack)) = True, "", Trim(flServicePack))
.Fields(13).Value = IIf(IsNull(Trim(flServicePackVersion)) = True, "", Trim(flServicePackVersion))
.Fields(14).Value = IIf(IsNull(Trim(flPlusVersionNumber)) = True, "", Trim(flPlusVersionNumber))
.Fields(15).Value = IIf(IsNull(Trim(flDirectXVersion)) = True, "", Trim(flDirectXVersion))
.Fields(16).Value = IIf(IsNull(Trim(flWindowsDirectory)) = True, "", Trim(flWindowsDhrectory))
.Fields(17).Value = IIf(IsNull(Trim(flSystemDirectory)) = True, "", Trim(flSystemDirectory))
.Fields(18).Value = IIf(IsNull(Trim(flTemporaryDirectory)) = True, "", Trim(flTemporaryDirectory))
.Update
End With
'tutup perulangan
'selesai
Close I
Exit Sub
ElseIf JmlGrsMin = 2 Then
'mulai pembacaan data
Dim Panjang As Integer
Panjang = Len(Textnya)
If Panjang = 0 Then GoTo langsung
If Kolom = 1 Then
flName = Trim(Mid(Textnya, 29, Panjang - 29))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flName & "#"
ElseIf Kolom = 2 Then
flEdition = Trim(Mid(Textnya, 29, Panjang - 29))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flVendor & "#"
ElseIf Kolom = 3 Then
flInstallDate = Trim(Mid(Textnya, 29, Panjang - 29))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flVersion & "#"
ElseIf Kolom = 4 Then
flRegisteredOwner = Trim(Mid(Textnya, 29, Panjang - 29))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flProductLanguage & "#"
ElseIf Kolom = 5 Then
flRegisteredOrganization = Trim(Mid(Textnya, 29, Panjang - 29))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flInstallDate & "#"
ElseIf Kolom = 6 Then
flProductID = Trim(Mid(Textnya, 29, Panjang - 29))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flInstallLocation & "#"
ElseIf Kolom = 7 Then
flMajorVersionNumber = Trim(Mid(Textnya, 29, Panjang - 29))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flInstallSource & "#"
ElseIf Kolom = 8 Then
flMinorVersionNumber = Trim(Mid(Textnya, 29, Panjang - 29))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flInstallState & "#"
ElseIf Kolom = 9 Then
flBuildNumber = Trim(Mid(Textnya, 29, Panjang - 29))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flAssignmentType & "#"
ElseIf Kolom = 10 Then
flServicePack = Trim(Mid(Textnya, 29, Panjang - 29))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flPackageCode & "#"
ElseIf Kolom = 11 Then
flServicePackVersion = Trim(Mid(Textnya, 29, Panjang - 29))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flPackageName & "#"
ElseIf Kolom = 12 Then
flPlusVersionNumber = Trim(Mid(Textnya, 29, Panjang - 29))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flLocalPackage & "#"
ElseIf Kolom = 13 Then
flDirectXVersion = Trim(Mid(Textnya, 29, Panjang - 29))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flProductID & "#"
ElseIf Kolom = 14 Then
flWindowsDirectory = Trim(Mid(Textnya, 29, Panjang - 29))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flRegisteredCompany & "#"
ElseIf Kolom = 15 Then
flSystemDirectory = Trim(Mid(Textnya, 29, Panjang - 29))
Kolom = Kolom + 1
'Hasilnya = Hasilnya & flRegisteredOwner & "#"
ElseIf Kolom = 16 Then
flTemporaryDirectory = Trim(Mid(Textnya, 29, Panjang - 29))
Kolom = Kolom + 1
'selesai
Kolom = 1
'Mulai = False
'Hasilnya = Hasilnya & flSoftwareID & vbCrLf
End If
End If
End If
Wend
Close I
Exit Sub
End Sub
'=====================
Kalau kita perhatikan dengan seksama, script yang saya buat tersebut menggunakan pengenalan pola dengan cara sederhana yaitu memeriksa satu-persatu tiap baris dari file hasil winaudit (karena keterbatasan kemampuan saya tentunya).
Langkah Berikutnya: Lengkapi Programnya.
Lengkapi program? maksudnya program di atas tadi cuma intinya saja...untuk kelengkapan mulai dari komponen/reference yang digunakan dan script-script yang lain bisa ditambahkan sendiri sesuai dengan algoritma dan logika pemrograman masing-masing.
Semoga bermanfaat. Insya Alloh...! Amiin...!
(Akr)