У меня есть следующий фрагмент кода.
string currentDir = Directory.GetCurrentDirectory();
Process mcProcess = new Process();
mcProcess.StartInfo.WorkingDirectory = currentDir;
//mcProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
mcProcess.StartInfo.UseShellExecute = true;
mcProcess.StartInfo.FileName = "java.exe";
mcProcess.StartInfo.Arguments = @"-jar Minecraft\forge.jar -Xms2G -Xmx2G";
//mcProcess.StartInfo.RedirectStandardOutput = true;
mcProcess.Start();
//MetroMessageBox.Show(this, mcProcess.StandardOutput.ReadToEnd());
//mcProcess.WaitForExit();
Это выдает Win32Exception при запуске процесса, я проверил целевую архитектуру и ее x64. Java путь установлен правильно, если я запускаю команду на консоли, она работает нормально. Однако это не сработает.
Сообщение: только часть запроса readprocessmemory или writeprocessmemory была выполнена (переведено, поэтому оно может быть не точным на 100%)
Stacktrace:
'mcProcess.MainModule' threw an exception of type 'System.ComponentModel.Win32Exception'
at System.Diagnostics.NtProcessManager.GetModuleInfos(Int32 processId, Boolean firstModuleOnly)
at System.Diagnostics.NtProcessManager.GetFirstModuleInfo(Int32 processId)
at System.Diagnostics.Process.get_MainModule()
Собственный код ошибки: 299 AKA ERROR_OPLOCK_NOT_GRANTED
РЕДАКТИРОВАТЬ: Это похоже на проблему с правами, так как запуск скомпилированного исполняемого файла от имени администратора работает нормально. Как я могу заставить его работать для пользователей без повышенных прав?