weer een probleem bij het WMI

Status
Niet open voor verdere reacties.

hanonymouss

Gebruiker
Lid geworden
7 sep 2011
Berichten
283
Hallo allemaal,

Ik probeer alle gemaakte herstelpunten weer te geven in een listview, maar de code wordt gewoon niet uitgevoerd

code:
[CPP]Dim o As Object
Dim sr As Object
Dim yr As String, mo As String, dy As String
Dim lvItem As ListViewItem
o = GetObject("winmgmts:root/default").InstancesOf("SystemRestore")

For Each sr In o
lvItem = ListView1.Items.Add(New ListViewItem(New String() {"", "P" & sr.SequenceNumber, sr.Description}))

yr = Mid$(sr.CreationTime, 1, 4)
mo = Mid$(sr.CreationTime, 5, 2)
dy = Mid$(sr.CreationTime, 7, 2)

ListView1.Items(ListView1.Items.Count).SubItems(0).Text = yr & "/" & mo & "/" & dy
Next
[/CPP]

Graag jullie hulp :thumb:
 
Kan je er niet met breakpoints achterkomen waar de code ophoud met werken?
En weet je zeker dat je de code ook werkelijk aanroept?

Succes!
 
De code stopt met werken op dit punt:

[CPP] o = GetObject("winmgmts:root/default").InstancesOf("SystemRestore")[/CPP]
 
Nou bij mij wordt die code gewoon uitgevoerd...

Weet je zeker dat je wel systeemherstelpunten hebt?
 
Ja ik heb er drie. Twee die ik zelf heb gemaakt en 1 van windows update.
@JoZ1: waarom wordt de code bij u wel ??
 
Hmm, ik heb de code nu ook geprobeerd. Bij mij werkt het ook niet....:confused:

Misschien hangt het af van de versie van windows...

Ik heb nog even gezocht, maar kon zo snel niks vinden....


MartinJM


*EDIT*
Details van wat er niet werkt: Bij mij is het zo dat de inhoud van de loop niet wordt uitgevoerd... De regel "For Each sr In o" nog wel, maar daarna niet meer. Ik denk dus dat het bij mij ook fout gaat bij deze regel: "o = GetObject("winmgmts:root/default").InstancesOf("SystemRestore")".
Verder is er niet echt nog iets waarbij het volgens mij fout zou kunnen gaan...:confused:
 
Laatst bewerkt:
Ik denk dat ik het al weet: Je hebt administratorrechten nodig :)
 
Het verbaast me een beetje , normaal krijg je een waarschuwing. Ik heb ook geen try catch gebruikt. Ik zal het uitvoeren als administrator van zodra ik thuis kom. Ik zit op men smartphone.
 
Het is zo dat het object niet 'gevuld' kon worden omdat er geen administratorrechten waren, en de loop dus ook niet werd uitgevoerd.
Als je een herstelpunt probeert te maken d.m.v. VB-code krijg je wel een foutmelding ;)
 
Idd JoZ1 het klopt

Toen ik de code heb uitgevoerd als admin kreeg ik een error

<InvalidArgument=Waarde van 1 is niet geldig voor index. Parameter: index

Daarna heb ik deze lijn:

[CPP] ListView1.Items(ListView1.Items.Count).SubItems(0).Text = yr & "/" & mo & "/" & dy[/CPP]

veranderd naar deze:

[CPP] ListView1.Items(ListView1.Items.Count -1).SubItems(0).Text = yr & "/" & mo & "/" & dy[/CPP]



Nadien kreeg ik gewoon de datum van het herstelpunt te zien en de ID denk ik bij de tweede kolom komer te staan (P71 en P72) ?

Ik wil graag naast de datum ook de naam van het herstelpunt te zien
 
Laatst bewerkt:
Kan zoiets niet:

sr.Name
sr.Title

etc?
 
Opgelost

IK heb het geprobeerd met een api en het is gelukt:

[CPP]<DllImport("Srclient.dll")> _
Public Shared Function SRRemoveRestorePoint(ByVal index As Integer) As Integer
End Function
Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim SeqNum As Integer = 335
Dim intReturn As Integer = SRRemoveRestorePoint(SeqNum)
End Sub

Dim objClass As New System.Management.ManagementClass("\\.\root\default", "systemrestore", New System.Management.ObjectGetOptions())
Dim objCol As System.Management.ManagementObjectCollection = objClass.GetInstances()

Dim Results As New StringBuilder()
For Each objItem As System.Management.ManagementObject In objCol
Results.AppendLine(DirectCast(objItem("description"), String) + Convert.ToChar(9) + CUInt(objItem("sequencenumber")).ToString())


Next

MessageBox.Show(Results.ToString())

[/CPP]


Ik krijg de naam van het herstelpunt(en) te zien

Toch bedankt voor jullie hulp :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan