如,我电脑有C盘为20G。现在还有未分区磁盘50G,我怎么用C#写代码,把这剩下的50G分成一个磁盘D。
我网上查了一下,API好像能做这个功能,但还是没看太明白,请高下指教,谢谢。
 注,我是要用C#代码来完成这个功能。不是windows上直接操作。

解决方案 »

  1.   

    直接读写磁盘分区表吧,不过你这个剩下的50G分成一个磁盘D,是肯定的么?如果剩下的不是50G怎么办?如果已经有一个D盘了怎么办?
      

  2.   

    50G不能肯定,D盘也不能肯定。应该怎么办呀。
      我刚听人说,CMD命令可以做这个操作。你知道应该怎么办吗
      

  3.   


    就是我现在用C#调接口,创建了一台新的虚拟机,建好后,除了C盘指定大小外,其它大小都在未分区里面。
    我现在要用C#代码,自动在创建完虚拟机后,对剩余磁盘进行分区。
      

  4.   


    我知道怎么用C#调用CMD命令,但我不知道哪个命令可以做该操作。
      

  5.   

    嗯。我有听人说可以调用PQ来进行操作,
    Process p  = Process.Start(@"这里输入你的分区程序的路径");
    但还没找到具体的解决方法,能给点提示吗
      

  6.   

    我是用HYPER-V的VMM工具建的虚拟机呀。在画面上明明是建 了多个盘的,但除了模板中的C盘以外,其它空间都变成未分磁盘了。
      

  7.   

    我重新描述过整条流程好了。
    我新建了一台虚拟机,该虚机机的C盘大小是通过模板大小来给的,但是虚拟机建好后,只有一个C盘,还有剩下的硬盘大小,并没有自动分配到C盘,而是在未分区里。我现在要通过C#代码,把这些未分区的大小分配到D盘去。
      

  8.   

    喀!!不好意思,我好像越讲越乱了。
     我的C#程序是在本机运行的。通过运行这段代码,会去新建一台虚拟机。
    而虚拟机建好后,会有一个C盘系统盘,但另外还有,比如50G的空间,是在未分区中的。我现在要通过C#代码,把这50G的空间,新建成磁盘D。
    如图:
      

  9.   

    不好意思,我越说越乱了,我的C#程序是在本机运行的。而我的虚拟机是通过
    VMM(Virtual Machine Monitor)虚拟机管理器程序来建的。
      

  10.   

    虚拟机模板里到底设置了几块硬盘?是什么类型的硬盘?我说网络通讯软件的意思是,你用本机代码去分区虚拟机里的硬盘,思路是错误的,别Process.Start(@"PQ");什么的把自己的硬盘给分区了
      

  11.   

    模版里面,设置了CPU个数,硬盘,内存大小什么的,
    而硬盘上面装了系统。
    模版不是我建的,我不是特别清楚,不过是选写了模 版文件,在进到系统中分区什么的。
      

  12.   

    硬盘设置是在模版完成的,我也不知道是怎么弄的。
    嗯。就是要自动完成分区,我现在在试diskpart,貌似能成。
      

  13.   

    感谢大家,问题已经使用diskpart解决了。用C#,执行diskpart.ext
    步骤:
    list disk            显示一系列的磁盘信息,如大小,可用空间等
    select disk 1        选中disk 1的信息
    create partition extended    创建可扩展分区
    create partition logical     创建逻辑分区
    assign                       指派磁盘
    exit    退出diskpart.ext