簡體   English   中英

使用VB.net減小USB分區的大小

[英]Reduce USB partition size using VB.net

我需要編寫一個能夠格式化USB記憶棒的應用程序,使分區的大小只有1 MB。

我們正在將USB加密狗中的4 gig USB記憶棒轉換為帶有技術人員將始終擁有的許可文件的USB加密狗。 這使他們可以訪問我們軟件的某些特殊設置。 問題是我們的技術人員也將此棍子用於私人用途(他們不應該),因此我們希望通過將其大小減小到1 MB來避免這種情況。 到目前為止,我已經通過稱為bootice的程序完成了此操作,但現在我們的秘書必須這樣做,而她對計算機的興趣不大,我們需要一個更簡單的解決方案。

因此,我需要在生成許可證密鑰的軟件中實施格式化。 因此單擊一下即可格式化驅動器並添加許可證。

是否可以使用標准尺寸以外的其他格式格式化驅動器?

我不需要剩余的4個木棍可用! 它們可以保持隱藏或未格式化。

---------------更新-----------

我能夠使用diskpart通過CMD重新對存儲棒進行分區。 現在的問題是我必須通過程序來做。 我必須執行的命令列表如下:

diskpart
list disk    (REMEMBER DISK NUMBER FROM LIST)
select disk x (REPLACE X WITH DISK NUMBER)
list partition (REMEMBER PARTITION FROM LIST, USUALLY 1 IF ONLY ONE PARTITION IS THERE)
select partition x (REPLACE X WITH PARTITION NUMBER)
delete partition
create partition primary size=1
format

到現在為止還挺好。 我的問題是我需要找出我的USB磁盤具有的磁盤號。 我知道驅動器號,但不知道list disk命令返回的磁盤號。

我找到了解決方案! 以下代碼正是我所需要的。 我所需要知道的只是驅動力。

                   Dim driveletter as string
                   Dim scope As ManagementScope
                    scope = New ManagementScope("\\localhost\root\cimv2")
                    scope.Connect()
                    Dim query As ObjectQuery
                    query = New ObjectQuery("SELECT * FROM Win32_PerfRawData_PerfDisk_PhysicalDisk")
                    Dim objOS As ManagementObjectSearcher
                    objOS = New ManagementObjectSearcher(scope, query)



                    Dim objMgmt As ManagementObject
                    Dim aryHardDiskOnSystem As New ArrayList

                    For Each objMgmt In objOS.Get
                        ' aryHardDiskOnSystem.Add(objMgmt("name").ToString())
                        Debug.WriteLine(objMgmt("name").ToString())
                        If objMgmt("name").ToString().Contains(driveletter) Then
                            Dim drivenumber As Integer = objMgmt("name").ToString().Substring(0, 1)
                            Dim FILE_NAME As String = "part.scp"
                            If System.IO.File.Exists(FILE_NAME) = False Then
                                System.IO.File.Create(FILE_NAME).Dispose()
                            End If
                            Dim objWriter As New System.IO.StreamWriter(FILE_NAME, True)
                            objWriter.WriteLine("select disk " & drivenumber)
                            objWriter.WriteLine("select partition 1")
                            objWriter.WriteLine("delete partition")
                            objWriter.WriteLine("create partition primary size=1") 'size is in MB. i am reducing the partition size to 1 MB.
                            objWriter.WriteLine("format label=" & TextBox2.Text)
                            objWriter.Close()


                            Dim oProcess As New Process()
                            Dim oStartInfo As New ProcessStartInfo("diskpart", "/s part.scp")
                            oStartInfo.UseShellExecute = False
                            oStartInfo.RedirectStandardOutput = True
                            oProcess.StartInfo = oStartInfo
                            oProcess.Start()
                            oProcess.WaitForExit()
                            oProcess.Close()

                            File.Delete("part.scp")
                        End If

                        Next

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM