kommandolinje - Problem med batch script/windows aktivering fra c # program

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg lavede et simpelt lille c # program til at automatisere aktivering af Windows-produktnøgler, som min arbejdsplads har problemer med (vi købte en bulkbestilling af forseglede pakker, der er ægte nøgler, men har aktiveringsproblemer, som er underlige


            System.IO.Directory.CreateDirectory("C:/Activation");
        System.IO.File.Create("C:/Activation/activate.bat").Close();
        File.WriteAllText("C:/Activation/activate.bat", "C:" + Environment.NewLine + @"cd /." + Environment.NewLine + "cd C:/Windows/System32" + Environment.NewLine + @"slmgr.vbs /ipk " + Product\_Key.Text + Environment.NewLine + @"slui.exe 4");
        Thread.Sleep(2000);

        var proc1 = new ProcessStartInfo();
        string newproc = (@"C:Activationactivate.bat");
        proc1.UseShellExecute = false;
        proc1.WorkingDirectory = @"C:WindowsSystem32";
        proc1.FileName = @"C:WindowsSystem32cmd.exe";
        proc1.Verb = "runas";
        proc1.Arguments = "/k " + newproc;
        proc1.WindowStyle = ProcessWindowStyle.Normal;
        System.Diagnostics.Process.Start(proc1);


Det skal også siges, at jeg har forsøgt at forenkle med bare at køre System.Diagnostics.Process.Start(C:/Activation/activate.bat) og springe over de sandsynlige unødvendige oplysninger.


Et tidligere forsøg så sådan ud


        var proc1 = new ProcessStartInfo();
        string newproc = ("slmgr.vbs /ipk " + product\_key.Text + @" & cd C:/Windows/System32" + @" & slui.exe 4");
        proc1.UseShellExecute = true;
        proc1.WorkingDirectory = @"C:WindowsSystem32";
        proc1.FileName = @"C:WindowsSystem32cmd.exe";
        proc1.Verb = "runas";
        proc1.Arguments = "/c " + newproc;
        proc1.WindowStyle = ProcessWindowStyle.Normal;
        System.Diagnostics.Process.Start(proc1);


Det samme resultat. En kommandoprompt ville åbne, køre slmgr og indtaste nøglen, og lukk derefter øjeblikkeligt, når den kom til sluselinien. Er der nogen måde at køre kommandoen slui 4 (telefonaktivering til Windows) direkte fra mit c # 'program'? Kan dette fastsættes ved blot at fortælle selve programmet at køre Process.Start(C:/Windows/System32/Slui.exe og i så fald hvordan vil jeg angive parameter 4?

Bedste reference