Неожиданное Win32Exception в getMainModule - PullRequest
0 голосов
/ 24 марта 2020

У меня есть следующий фрагмент кода.

    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

РЕДАКТИРОВАТЬ: Это похоже на проблему с правами, так как запуск скомпилированного исполняемого файла от имени администратора работает нормально. Как я могу заставить его работать для пользователей без повышенных прав?

1 Ответ

0 голосов
/ 24 марта 2020

Как и ожидалось, это была проблема с разрешениями.

Я решил ее, получив переменную JAVA_HOME из реестра и добавив в нее «\ bin \ java .exe», чтобы получить полную версию. путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...