Stationletter veranderen in vb2008

Status
Niet open voor verdere reacties.

NinYes

Gebruiker
Lid geworden
14 jul 2006
Berichten
18
Hallo allemaal,

Ik ben een tijdje bezig met een tooltje om de driveletter van mijn optical naar een andere letter om te zetten.

Nu heb ik na lang zoeken dit gevonden, maar werkt niet. Heeft iemand een suggestie hoe dit gerealiseerd kan worden?

Groetjes, NinYes.



Code:
Public Sub VeranderDriveLetter()
        Dim query As New System.Management.ManagementObjectSearcher("SELECT * From Win32_LogicalDisk(")
        Dim queryCollection As System.Management.ManagementObjectCollection = query.Get()

        For Each mo As System.Management.ManagementObject In queryCollection
                Select Case Integer.Parse(mo("DriveType").ToString())

                    Case 2 'removable drives

                    Case 3 'Local drives


                    Case 3 'Local drives

                    Case 4 'Network drives
                       
                    Case 5 'CD rom drives
                        MsgBox("Logical Drive " & mo("DeviceID").ToString)

                        If mo("DeviceID").ToString = "E:" Then
                            mo.SetPropertyValue("DeviceID", "R:")
                            MsgBox("local Drive" & mo("DeviceID").ToString)
                        End If

                        MsgBox("CD Rom Drive " & mo("DeviceID").ToString)

                End Select
        Next
    End Sub
 
Laatst bewerkt door een moderator:
Project -> Add reference -> .NET -> System.Management en je code zou moeten werken.
 
Project -> Add reference -> .NET -> System.Management en je code zou moeten werken.

Dankje voor je reactie.
Sorry, ik had eigenlijk iets duidelijker moeten zijn..
Bij uitvoer van deze code hangt mijn systeem 10 seconden en krijg dan de fout:

System.ExecutionEngineException was unhandled
Message: An unhandled exception of type 'System.ExecutionEngineException' occurred in Unknown Module.


Ik heb met try-catch al de fout af proberen te vangen, maar dat hielp niet. Het lijkt er op dat de query te groot is.
Als ik de fout kan negeren, werkt het veranderen van de driveletter wel...
 
Ja, aangeven wat er precies verkeerd gaat is altijd handig. Ik heb zelf even liggen stoeien in VB en heb het werkend gekregen:

[cpp]
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim query As New Management.ManagementObjectSearcher("select * from win32_volume where drivetype = 5 and driveletter = 'G:'")
Dim queryCollection As Management.ManagementObjectCollection = query.Get()


For Each mo As Management.ManagementObject In queryCollection
mo.SetPropertyValue("DriveLetter", "R:")
mo.Put()
Next
End Sub
[/cpp]

Om de wijziging daadwerkelijk te kunnen doorvoeren heb je wel administrator rechten nodig (even een controle inbouwen lijkt me het beste, maar dat laat ik aan jou over).
 
Mega bedankt CoD_NL, werkt mooi!

Er is inderdaad een rechtenkwestie, maar deze code wordt toch op een XP-machine gebruikt, die doet niet zo moeilijk.

Groetjes, NinYes.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan