# VHD虚拟磁盘管理工具 **Repository Path**: dcsource/vhdxuni ## Basic Information - **Project Name**: VHD虚拟磁盘管理工具 - **Description**: 当前win11系统内,很多老的软件在32768字节扇区磁盘上无法启动.于是使用本软件可以建立vhd虚拟磁盘. VHD使用512字节扇区. winform ,可扩展. - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-10 - **Last Updated**: 2026-04-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # VHD虚拟磁盘管理工具 ## 项目简介 这是一个用于管理VHD虚拟磁盘的Windows Forms工具,专门为解决SQL Server 2008 R2在32768字节扇区物理磁盘上无法启动的问题而开发。 ## 功能特性 - ✅ **创建VHD**:创建固定大小的VHD虚拟磁盘,512字节扇区(兼容SQL Server 2008 R2) - ✅ **挂载VHD**:将现有VHD文件挂载为虚拟磁盘并分配盘符 - ✅ **分离VHD**:卸载已挂载的VHD虚拟磁盘 - ✅ **删除VHD**:删除VHD文件(自动分离后删除) - ✅ **自动检测**:自动检测可用盘符和管理员权限 ## 技术栈 - .NET 10.0-windows - Windows Forms - DiskPart命令行工具 ## 编译和运行 ### 前置要求 - Windows 10/11 操作系统 - .NET 10.0 SDK(预览版) ### 编译步骤 #### 方法一:使用批处理脚本(推荐) 双击运行 `build.bat`,按提示操作。 #### 方法二:使用命令行 ```bash # 编译项目 dotnet build -c Release # 运行项目(需要管理员权限) dotnet run -c Release ``` #### 方法三:发布为独立应用 ```bash # 发布为独立exe文件(包含运行时) dotnet publish -c Release -r win-x64 --self-contained true # 发布后的文件位于: # xuni\bin\Release\net10.0-windows\win-x64\publish\xuni.exe ``` ## 使用说明 ### 第一次运行 1. **管理员权限**:程序需要管理员权限才能操作VHD,启动时会自动提示 2. **创建VHD**: - 选择VHD文件保存路径(如 `D:\SQLData.vhd`) - 设置VHD大小(建议10GB以上) - 选择盘符(如 E:) - 点击"创建VHD" 3. **移动SQL Server数据文件**: - 停止 SQL Server 服务 - 将 `master.mdf` 和 `mastlog.ldf` 复制到新盘符 - 修改注册表中的数据文件路径 - 重启 SQL Server 服务 ### 注意事项 - **扇区大小**:创建的VHD使用512字节扇区,完全兼容SQL Server 2008 R2 - **性能影响**:VHD会有约5-10%的性能开销 - **空间预留**:VHD是固定大小,创建时请预留足够空间 - **长期建议**:建议升级SQL Server到2016以上版本,原生支持大扇区 ## 项目结构 ``` xuni/ ├── Models/ # 数据模型 │ ├── VhdInfo.cs # VHD信息模型 │ └── OperationResult.cs # 操作结果模型 ├── Services/ # 服务层 │ ├── DiskPartExecutor.cs # DiskPart执行器 │ └── VhdService.cs # VHD操作服务 ├── Utils/ # 工具类 │ ├── AdminChecker.cs # 管理员权限检测 │ └── DriveLetterHelper.cs # 盘符管理 ├── MainForm.cs # 主窗体业务逻辑 ├── MainForm.Designer.cs # 主窗体UI布局 ├── Program.cs # 程序入口 └── build.bat # 编译脚本 ``` ## 常见问题 ### Q: 为什么需要管理员权限? A: DiskPart命令需要管理员权限才能创建和管理虚拟磁盘。 ### Q: VHD的扇区大小是多少? A: VHD默认模拟512字节逻辑扇区,完全兼容SQL Server 2008 R2。 ### Q: 可以创建多大的VHD? A: 理论上最大支持2048GB(2TB),实际大小受物理磁盘空间限制。 ### Q: VHD和物理磁盘性能差异? A: VHD会有5-10%的性能开销,但对于SQL Server的一般工作负载可以接受。 ## 开发者信息 - 开发工具:Visual Studio Code / Visual Studio - 目标框架:.NET 10.0-windows - UI框架:Windows Forms ## 许可证 本项目仅供学习和内部使用。 ## 更新日志 ### v1.0.0 (2026-04-09) - ✅ 完成基础功能:创建、挂载、分离、删除VHD - ✅ 实现管理员权限检测和提升 - ✅ 实现自动盘符分配 - ✅ 完善错误处理和日志记录