diff --git a/VM/buildvbox.py b/VM/buildvbox.py
index 5f7ce86..0132de2 100644
--- a/VM/buildvbox.py
+++ b/VM/buildvbox.py
@@ -1 +1,242 @@
-#!/usr/bin/env python3
\ No newline at end of file
+# *
+# * gfdgd xi
+# * 依照 GPLV3 开源
+# *
+
+import os
+import psutil
+import subprocess
+from vbox import *
+from qemu import *
+
+class buildvbox:
+    def homePath(self):
+        return os.getenv("HOME")
+
+    def applicationDirPath(self):
+        return os.path.split(os.path.realpath(__file__))[0]  # 返回 string
+    
+    # 清屏
+    def CleanScreen(self):
+        if(os.system("/etc/os-version")):
+            # Unix
+            os.system("clear")
+            return
+        # Windows
+        os.system("cls")
+
+    # 获取 CPU 个数
+    def GetCPUSocket(self) -> int:
+        # 获取命令返回值
+        value = subprocess.getoutput("bash -c 'cat /proc/cpuinfo | grep \"cpu cores\" | uniq | wc -l'")
+        # 判断异常值,例如没挂载 /proc
+        if (value <= 0):
+            value = 1
+        return value
+
+    # 获取 CPU 核心数
+    def GetCPUCore(self) -> int:
+        value = subprocess.getoutput("bash -c \"grep 'core id' /proc/cpuinfo | sort -u | wc -l\"")
+        # 判断异常值,例如没挂载 /proc
+        if(value <= 0):
+            value = 1
+        return value
+
+    def GetNet(self) -> str:
+        # TODO
+        '''QList<QNetworkInterface> netList = QNetworkInterface::allInterfaces()
+        foreach(QNetworkInterface net, netList):
+        qDebug() << "Device:" << net.name()
+        QList<QNetworkAddressEntry> entryList = net.addressEntries()
+        foreach(QNetworkAddressEntry entry, entryList):
+            QString ip = entry.ip().toString()
+            qDebug() << "IP Address: " << ip
+            if(ip != "127.0.0.1" and ip != "192.168.250.1" and ip != "::1" and net.name() != "lo"):
+                # 返回网卡名称
+                return net.name()
+                }
+            }
+        }
+        return ""'''
+        return ""
+
+    def Download(self, url: str, path: str, fileName: str) -> int:
+        return os.system(("aria2c -x 16 -s 16 -c " + url + " -d " + path + " -o " + fileName))
+
+    def buildvbox(self, isoPath: str, id: int, vm: int):
+        programPath = self.applicationDirPath()
+
+        net = self.GetNet()
+        print("使用网卡:", net)
+        if(vm == 0):
+            # Qemu
+            vm = qemu("Windows")
+            setISOAlready = 0
+            if (id == 0):
+                vm.Create("Windows7")
+                vm.SetDisplayMemory(32)
+            elif (id == 1):
+                vm.Create("Windows7_64")
+                vm.SetDisplayMemory(32)
+            elif (id == 2):
+                vm.Create("WindowsNT_64")
+                vm.SetDisplayMemory(32)
+            elif (id == 3):
+                vm.Create("WindowsNT_64")
+                vm.SetDisplayMemory(32)
+                vm.EnabledUEFI(True)
+            elif (id == 4):
+                vm.Create("Windows11_64")
+                vm.SetDisplayMemory(128)
+                vm.EnabledUEFI(True)
+                setISOAlready = 1
+            elif (id == 5):
+                vm.Create("WindowsXP_32")
+                vm.SetDisplayMemory(32)
+                setISOAlready = 1
+            elif (id == 6):
+                vm.Create("WindowsNT_64")
+                vm.SetDisplayMemory(32)
+                setISOAlready = 1
+            elif (id == 7):
+                vm.Create("WindowsNT_64")
+                vm.SetDisplayMemory(32)
+                vm.EnabledUEFI(True)
+                setISOAlready = 1
+            elif (id == 8):
+                vm.Create("WindowsNT_64")
+                vm.SetDisplayMemory(32)
+                vm.UseArmhfEFI()
+                setISOAlready = 1
+            elif (id == 9):
+                vm.Create("WindowsNT_64")
+                vm.SetDisplayMemory(32)
+                vm.UseAarch64EFI()
+                setISOAlready = 1
+            vm.CreateDiskControl()
+            #vm.CreateDiskControl("storage_controller_2")
+            if(id == 0 or id == 1):
+                vm.CreateDisk(self.homePath() + "/Qemu/Windows/Windows.qcow2", 131072)
+            else:
+                vm.CreateDisk(self.homePath() + "/Qemu/Windows/Windows.qcow2", 131072 * 5)
+
+            #vm.MountDisk(self.homePath() + "/Qemu/Windows/Windows.qcow2")
+            vm.MountMainDisk(self.homePath() + "/Qemu/Windows/Windows.qcow2")
+            if(os.system("/opt/apps/deepin-wine-runner-qemu-system-extra/files/resources/virtio-win.iso")):
+                vm.MountISO("/opt/apps/deepin-wine-runner-qemu-system-extra/files/resources/virtio-win.iso", "storage_controller_2", 1, 3)
+            if(not setISOAlready):
+                vm.MountISO(isoPath, "storage_controller_1", 0, 1)
+                if (id == 0):
+                    if(os.system(programPath + "/Windows7X86Auto.iso")):
+                        vm.MountISO(programPath + "/Windows7X86Auto.iso", "storage_controller_1", 1, 2)
+                elif (id == 1):
+                    if(os.system(programPath + "/Windows7X64Auto.iso")):
+                        vm.MountISO(programPath + "/Windows7X64Auto.iso", "storage_controller_1", 1, 2)
+            else:
+                #vm.AutoInstall(isoPath)
+                if(isoPath != ""):
+                    vm.MountMainISO(isoPath)
+            vm.SetCPU(psutil.cpu_count(), self.GetCPUSocket(), self.GetCPUCore())
+            memory = 0
+            memoryAll = 0
+            swap = 0
+            swapAll = 0
+            # TODO
+            #infoUtils::memoryRate(memory, memoryAll, swap, swapAll)
+            vm.SetMemory(memoryAll / 3 / 1024)
+            vm.SetNetBridge(net)
+            vm.EnabledAudio()
+            vm.EnabledClipboardMode()
+            vm.EnabledDraganddrop()
+            vm.SetVBoxSVGA()
+            vm.SetMousePS2()
+            vm.SetKeyboardPS2()
+            vm.OpenUSB()
+            vm.ShareFile("ROOT", "/")
+            vm.ShareFile("HOME", self.homePath())
+            # TODO
+            if (id == 8):
+                vm.StartArmhf()
+            elif (id == 9):
+                vm.StartAarch64()
+            else:
+                vm.Start()
+        elif(vm == 1):
+            # VirtualBox
+            vm = vbox("Windows")
+            setISOAlready = 1
+            if (id == 0):
+                vm.Create("Windows7")
+                vm.SetDisplayMemory(32)
+            elif (id == 1):
+                vm.Create("Windows7_64")
+                vm.SetDisplayMemory(32)
+            elif (id == 2):
+                vm.Create("WindowsNT_64")
+                vm.SetDisplayMemory(32)
+            elif (id == 3):
+                vm.Create("WindowsNT_64")
+                vm.EnabledUEFI(True)
+                vm.SetDisplayMemory(32)
+            elif (id == 4):
+                vm.Create("Windows11_64")
+                vm.SetDisplayMemory(128)
+                vm.EnabledUEFI(True)
+                setISOAlready = 1
+            elif (id == 5):
+                vm.Create("WindowsXP_32")
+                vm.SetDisplayMemory(32)
+                setISOAlready = 1
+            elif (id == 6):
+                vm.Create("WindowsNT_64")
+                vm.SetDisplayMemory(32)
+                setISOAlready = 1
+            elif (id == 7):
+                vm.Create("WindowsNT_64")
+                vm.SetDisplayMemory(32)
+                vm.EnabledUEFI(True)
+                setISOAlready = 1
+            os.makedirs("/home/gfdgd_xi/Qemu/Windows/")
+            vm.CreateDiskControl()
+            #vm.CreateDiskControl("storage_controller_2")
+            if(id == 0 or id == 1):
+                vm.CreateDisk(self.homePath() + "/Qemu/Windows/Windows.qcow2", 131072)
+            else:
+                vm.CreateDisk(self.homePath() + "/Qemu/Windows/Windows.qcow2", 131072 * 5)
+            vm.MountDisk(self.homePath() + "/VirtualBox VMs/Windows/Windows.vdi")
+            if(not setISOAlready):
+                vm.MountISO(isoPath, "storage_controller_1", 0, 1)
+                if (id == 0):
+                    if(os.system(programPath + "/Windows7X86Auto.iso")):
+                        vm.MountISO(programPath + "/Windows7X86Auto.iso", "storage_controller_1", 1, 0)
+                elif (id == 1):
+                    if(os.system(programPath + "/Windows7X64Auto.iso")):
+                        vm.MountISO(programPath + "/Windows7X64Auto.iso", "storage_controller_1", 1, 0)
+            else:
+                vm.AutoInstall(isoPath)
+            # 判断 VirtualBox Guest ISO 是否存在
+            # 在的话直接挂载
+            if(os.system("/usr/share/virtualbox/VBoxGuestAdditions.iso")):
+                vm.MountISO("/usr/share/virtualbox/VBoxGuestAdditions.iso", "storage_controller_1", 1, 1)
+            # VirtualBox 的 CPU 数量设置方法和 Qemu 不一样
+            vm.SetCPU(self.GetCPUCore(), self.GetCPUSocket(), self.GetCPUCore())
+            memory = 0
+            memoryAll = 0
+            swap = 0
+            swapAll = 0
+            # TODO
+            #infoUtils::memoryRate(memory, memoryAll, swap, swapAll)
+            #memoryRate(memory, memoryAll, swap, swapAll)
+            vm.SetMemory(memoryAll / 3 / 1024)
+            vm.SetNetBridge(net)
+            vm.EnabledAudio()
+            vm.EnabledClipboardMode()
+            vm.EnabledDraganddrop()
+            vm.SetVBoxSVGA()
+            vm.SetMousePS2()
+            vm.SetKeyboardPS2()
+            vm.OpenUSB()
+            vm.ShareFile("ROOT", "/")
+            vm.ShareFile("HOME", self.homePath())
+            vm.Start()
+    
\ No newline at end of file
diff --git a/VM/vbox.py b/VM/vbox.py
index f6c3a4c..da591e2 100644
--- a/VM/vbox.py
+++ b/VM/vbox.py
@@ -84,7 +84,7 @@ class vbox:
         return os.system(("\"" + self.managerPath + "\" modifyvm \"" + self.name + "\" --draganddrop bidirectional"))
     
     def ShareFile(self, name: str, path: str):
-        return os.system(("\"" + self.managerPath + "\" sharedfolder add \"" + this->name + "\" -name \"" + self.name + "\" -hostpath \"" + path + "\""))
+        return os.system(("\"" + self.managerPath + "\" sharedfolder add \"" + self.name + "\" -name \"" + self.name + "\" -hostpath \"" + path + "\""))
 
     def SetVBoxSVGA(self):
         return os.system(("\"" + self.managerPath + "\" modifyvm \"" + self.name + "\" --graphicscontroller vboxsvga"))