Запуск bat файла в другой ОС - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, уважаемые программисты! Я по такому вопросу. Вот код программы:
class Program
    {
        static string inst = "inst.bat";
        static string unst = "unst.bat";
 
        static void Main(string[] args)
        {
            WindowsPrincipal wp = new WindowsPrincipal(WindowsIdentity.GetCurrent());
            bool adm = wp.IsInRole(WindowsBuiltInRole.Administrator);
            if (!adm)
            {
                ProcessStartInfo psi = new ProcessStartInfo();
                psi.UseShellExecute = true;
                psi.FileName = Assembly.GetExecutingAssembly().Location;
                psi.Verb = "runas";
                Process.Start(psi);
                Environment.Exit(0);
            }
            else
                Console.WriteLine("admin");
            string pf = null;
            checkfile(ref pf);
            if (!File.Exists(inst) && pf != null)
            {
                File.WriteAllText(inst, pf+" ""+ Environment.CurrentDirectory + "\\WindowsService1.exe"");
                File.WriteAllText("inst.txt", pf + " "" + Environment.CurrentDirectory + "\\WindowsService1.exe"");
            }
            if (!File.Exists(unst))
            {
                File.WriteAllText(unst, pf +" /u ""+ Environment.CurrentDirectory + "\\WindowsService1.exe"");
                File.WriteAllText("unst.txt", pf + " /u "" + Environment.CurrentDirectory + "\\WindowsService1.exe"");
            }
            string com = Console.ReadLine();
            if (com == "i")
            {
                ProcessStartInfo pi = new ProcessStartInfo();
                pi.WorkingDirectory = Environment.CurrentDirectory;
                pi.FileName = pi.WorkingDirectory + "\" +inst;
                Process.Start(pi);
            }
            if (com == "u")
            {
                ProcessStartInfo pi = new ProcessStartInfo();
                pi.WorkingDirectory = Environment.CurrentDirectory;
                pi.FileName = pi.WorkingDirectory + "\" + unst;
                Process.Start(pi);
                return;
            }
            com = Console.ReadLine();
            if (com == "s")
            {
                ServiceController sv = new ServiceController("MyServ");
                sv.Start();
            }
            Console.ReadKey();
        }
 
        static void checkfile(ref string pf)
        {
            if (File.Exists("C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319\\InstallUtil.exe"))
            {
                pf = "C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319\\InstallUtil.exe";
                return;
            }
            if (File.Exists("C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\InstallUtil.exe"))
            {
                pf = "C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\InstallUtil.exe";
                return;
            }
        }
    }
Этот код работает успешно на моей ОС (Windows 10) на которой писал и собирал данный проект. Но когда загружаюсь в Windows 8.1, копирую с флешки свои 2 экзешника (.exe) то бат файл почему-то не срабатывает в ходе выполнения программы, следовательно, служба не устанавливается... Хотя с флешки если запускать программу (в той же Windows 8.1) то все шикарно.. программа полностью работает... Как видите из кода, запускаю программу от имени администратора. Почему на 8.1 у меня программа отказывается работать? .NET 4.5.2 стоит и на одной и на другой ОС. P.S. Извините если не в тот раздел тему пишу
Ребят, в общем частично проблема решилась. Суть была в том что в 8.1 пользователь у меня на русском языке прописан... соответственно, путь содержал русские символы... Тогда следующий вопрос, как сделать чтобы русские символы поддерживались?

Решение задачи: «Запуск bat файла в другой ОС»

textual
Листинг программы
Encoding oemEncoding = Encoding.GetEncoding(CultureInfo.CurrentCulture.TextInfo.OEMCodePage);
File.WriteAllText("my.bat", "echo Привет", oemEncoding);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы