Проблема C# - cmd, не устанавливает рабочий каталог
Когда я пытаюсь выполнить командную строку из cmd.exe процесс, он не работает.
Это мой код:
public static String _getIntegrityVersion() { string _version = string.Empty; if (Directory.Exists("C:\\Program Files (x86)\\Integrity\\") == true) { DirectoryInfo _root = new DirectoryInfo("C:\\Program Files (x86)\\Integrity\\"); DirectoryInfo[] dir = _root.GetDirectories(); foreach (DirectoryInfo s in dir) { if (s.Name.Contains("IntegrityClient") == true) { _version = s.Name.Substring(15); break; } } } return _version; } public static string _searchVersionOfFile(FileInfo file) { string _versionIntegrity = _getIntegrityVersion(); Process cmd = new Process(); cmd.StartInfo.WorkingDirectory = "C:\\Program Files (x86)\\Integrity\\" + "IntegrityClient" + _versionIntegrity + "\\bin\\"; cmd.StartInfo.FileName = "cmd.exe"; cmd.StartInfo.RedirectStandardInput = true; cmd.StartInfo.RedirectStandardOutput = true; cmd.StartInfo.CreateNoWindow = true; cmd.StartInfo.UseShellExecute = false; cmd.Start(); string _versionOfFile = string.Empty; cmd.StandardInput.WriteLine("si rlog --fields=workingrev --sandbox=" + file.Directory.Name + "\\project.pj " + file.FullName); cmd.StandardInput.Flush(); cmd.StandardInput.Close(); string s = string.Empty; List<string> lines = new List<string>(); while ((s = cmd.StandardOutput.ReadLine()) != null) { lines.Add(s); } lines.Reverse(); for (int i = 0; i < lines.Count(); i++) if (lines[i].Contains("=========") == true) { _versionOfFile = lines[i + 1]; break; } cmd.WaitForExit(); return _versionOfFile; }
Что я уже пробовал:
Все, что я основал в интернете, в google, на форумах разработчиков.
Ничего не помогало ... Мне нужно это запустить cmd.exe из указанного каталога (тот, что из рабочего каталога), и он не запускается оттуда... И я не хочу делать там cmd и запускать его каждый раз ... Это не то решение, которое мне нужно !