簡體   English   中英

通過C#程序Windows 7以編程方式啟動vm“ Windows XP Mode”

[英]Starting a vm “Windows XP Mode” programmatically through a C# program Windows 7

好的,所以在通過ac#程序啟動Windows XP模式VM時遇到問題。 我正在使用的命令是vmwindow -file "absolute path to vmcx file ”,但是問題是該命令不適用於我的程序啟動的cmd提示符。 所以,這很奇怪。 我可以在計算機上轉到命令提示符,然后在計算機上運行此命令,它可以工作,但是如果我在c#程序中具有相同的命令,則彈出的命令提示符會告訴我“ vmwindow”不是可識別的命令。 我什至查看了每個命令提示符的路徑,它們的路徑不同,但是它們仍然都包含“ C:\\ Windows \\ system32 \\”,這是vmwindow.exe所在的位置。 因此,我在程序所填充的命令提示符窗口中導航,並且文件“ vmwindow.exe”不存在,但是如果我從計算機中打開命令提示符窗口並導航至該文件夾,則該文件夾存在。 我什么都沒有想到,因為我已經確保它們都在管理員模式下運行,並且我嘗試啟動包含該命令的bat文件,而不是直接運行該命令。 希望有人對此有所了解。 這是我正在使用的代碼:

private void button1_Click(object sender, EventArgs e)
    { 

        Process process = new System.Diagnostics.Process();
        ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();

        startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
        startInfo.FileName = "cmd.exe";
        startInfo.WorkingDirectory = @"<my path>";
        startInfo.Arguments = "/k vmwindow.exe -file \"<path to vcmx file>\\Windows XP Mode.vmcx\"";
        process.StartInfo = startInfo;
        process.Start();
    }

您可以做的是使用Powershell。 它具有用於Hyper V控制的本機集成,可以從c#輕松調用

您可以在此處查看所有HV-cmdlet

一個簡單的命令來啟動您的機器是

Start-VM "Windows 8.1 Pro" -Computername HV-Host1
// etcetc
Stop-VM "Windows 8.1 Pro" -Save

所以在C#中應該是這樣的

using (PowerShell PowerShellInstance = PowerShell.Create())
{
    PowerShellInstance.AddScript("Start-VM "Windows 8.1 Pro" -Computername HV-Host1");
}

可能是因為編譯程序時使用了位設置。 (項目的“構建”選項卡下的“平台目標”和“首選32位”設置)。 32位和64位進程在System32下可以看到不同的文件。 參見https://stackoverflow.com/a/950011

暫無
暫無

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

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