-
Feb 21st, 2018, 04:16 AM
#1
Impersonation for WMI gets
I was looking at impersonation and most of the example was like impersonationlevel.impersonate .
I am writing here how you can impersonate an actual user and by doing so I am using WMI to get the installed program on a remote computer.
Be advised to use anything else but WMI to get the products as WMI gets "some" of the product and not all. I guess using the registry to get the products is preferred.
Code:
'Must use and register System.Management
'Also add a gridview
'import these in your form
'Imports System
'Imports System.Management
'Imports System.Globalization
Dim opt As ObjectGetOptions
opt = New ObjectGetOptions(Nothing, TimeSpan.MaxValue, True)
Using manClass As New ManagementClass("\\Yourserver\root\cimv2", "Win32_Service", opt)
manClass.Scope.Options.EnablePrivileges = True
manClass.Scope.Options.Impersonation = ImpersonationLevel.Impersonate
manClass.Scope.Options.Username = "yourusername"
manClass.Scope.Options.Password = "yourpassword"
manClass.Scope.Options.Authority = "ntlmdomain:yourdomain"
Dim query As ObjectQuery
query = New ObjectQuery( _
"Select * from Win32_Product")
Dim searcher As ManagementObjectSearcher
searcher = _
New ManagementObjectSearcher(manClass.Scope, query)
Dim queryCollection As ManagementObjectCollection
queryCollection = searcher.Get()
Dim dt As DataTable = New DataTable()
dt.Columns.Add(New DataColumn("Name", GetType(System.String)))
dt.Columns.Add(New DataColumn("InstallLocation", GetType(System.String)))
dt.Columns.Add(New DataColumn("Instal Date", GetType(System.String)))
dt.Columns.Add(New DataColumn("InstallState", GetType(System.String)))
dt.Columns.Add(New DataColumn("Vendor", GetType(System.String)))
dt.Columns.Add(New DataColumn("Version", GetType(System.String)))
dt.Columns.Add(New DataColumn("PackageName", GetType(System.String)))
dt.Columns.Add(New DataColumn("InstallSource", GetType(System.String)))
dt.Columns.Add(New DataColumn("Language", GetType(System.String)))
dt.Columns.Add(New DataColumn("LocalPackage", GetType(System.String)))
dt.Columns.Add(New DataColumn("PackageCache", GetType(System.String)))
dt.Columns.Add(New DataColumn("PackageCode", GetType(System.String)))
dt.Columns.Add(New DataColumn("HelpTelephone", GetType(System.String)))
dt.Columns.Add(New DataColumn("AssignmentType", GetType(System.String)))
dt.Columns.Add(New DataColumn("Caption", GetType(System.String)))
dt.Columns.Add(New DataColumn("Description", GetType(System.String)))
dt.Columns.Add(New DataColumn("IdentifyingNumber", GetType(System.String)))
dt.Columns.Add(New DataColumn("ProductID", GetType(System.String)))
dt.Columns.Add(New DataColumn("RegOwner", GetType(System.String)))
dt.Columns.Add(New DataColumn("RegCompany", GetType(System.String)))
dt.Columns.Add(New DataColumn("SKUNumber", GetType(System.String)))
dt.Columns.Add(New DataColumn("Transforms", GetType(System.String)))
dt.Columns.Add(New DataColumn("URLInfoAbout", GetType(System.String)))
dt.Columns.Add(New DataColumn("URLUpdateInfo", GetType(System.String)))
dt.Columns.Add(New DataColumn("HelpLink", GetType(System.String)))
dt.Columns.Add(New DataColumn("WordCount", GetType(System.String)))
' Dim Sq As SelectQuery = New SelectQuery("Win32_Product")
Dim m As ManagementObject
For Each m In queryCollection
Dim dr As DataRow = dt.NewRow
dr("Name") = m("Name").ToString
dr("AssignmentType") = m("AssignmentType").ToString
dr("Caption") = m("Caption")
dr("Description") = m("Description")
dr("IdentifyingNumber") = m("IdentifyingNumber")
dr("InstallLocation") = m("InstallLocation")
Dim newDate As DateTime = DateTime.ParseExact(m("InstallDate").ToString, "yyyyMMdd", CultureInfo.InvariantCulture)
dr("Instal Date") = newDate
dr("InstallState") = m("InstallState")
dr("HelpLink") = m("HelpLink")
dr("HelpTelephone") = m("HelpTelephone")
dr("InstallSource") = m("InstallSource")
dr("Language") = m("Language")
dr("LocalPackage") = m("LocalPackage")
dr("PackageCache") = m("PackageCache")
dr("PackageCode") = m("PackageCode")
dr("PackageName") = m("PackageName")
dr("InstallState") = m("InstallState")
dr("ProductID") = m("ProductID")
dr("RegOwner") = m("RegOwner")
dr("RegCompany") = m("RegCompany")
dr("SKUNumber") = m("SKUNumber")
dr("Transforms") = m("Transforms")
dr("URLInfoAbout") = m("URLInfoAbout")
dr("URLUpdateInfo") = m("URLUpdateInfo")
dr("Vendor") = m("Vendor")
dr("WordCount") = m("WordCount")
dr("Version") = m("Version")
dt.Rows.Add(dr)
Next
Try
DataGridView1.DataSource = dt
Catch ex As Exception
End Try
End Using
Last edited by sapator; Feb 21st, 2018 at 04:23 AM.
ἄνδρα μοι ἔννεπε, μοῦσα, πολύτροπον, ὃς μάλα πολλὰ
πλάγχθη, ἐπεὶ Τροίης ἱερὸν πτολίεθρον ἔπερσεν·
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|