当我尝试启动新进程时,它会找到一个要执行的文件(就像它之前抛出不同的异常一样),但会抛出异常访问被拒绝。 Here是一个类似的问题,但只有权利和权利部分对我来说可能是一个问题的答案。还有一个想法是不将RedirectStandardOutput设置为true以便找到错误,所以我禁用了这一行。 我是否需要一些特殊权限,清单条目或类似的任何内容以启用我在Android上的应用程序启动新进程?
这是我的代码:
try
{
string strToFolder = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), fileName = "stockfish-8-armeabi-v7a";
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = System.IO.Path.Combine(strToFolder, fileName);
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
psi.WorkingDirectory = strToFolder;
//psi.RedirectStandardOutput = true;
//psi.RedirectStandardError = true;
stockfishProcess = new System.Diagnostics.Process();
stockfishProcess.StartInfo = psi;
stockfishProcess.Start();
}
catch (Exception e)
{
string estr = e.ToString();
initialized = false;
}
这是异常文本
System.ComponentModel.Win32Exception(0x80004005):ApplicationName ='/ data / user / 0 / AlienChessAndroid.AlienChessAndroid / files / stockfish-8-armeabi-v7a', 的CommandLine = '', currentDirectory所= '/数据/用户/ 0 / AlienChessAndroid.AlienChessAndroid /文件', 原生错误=拒绝访问 System.Diagnostics.Process.StartWithCreateProcess (System.Diagnostics.ProcessStartInfo startInfo)[0x0018b] in /Users/builder/data/lanes/4009/3a62f1ea/source/mono/mcs/class/System/System.Diagnostics/Process.cs:737
答案 0 :(得分:2)
试图以各种方式处理我的问题,我不小心解决了我的问题。在我的代码之前,这两行丢失了。
string[] cmd = { "chmod", "744", Path.Combine(strToFolder, fileName) };
Java.Lang.Runtime.GetRuntime().Exec(cmd);
默认文件权限不允许执行文件,因此必须更改。
答案 1 :(得分:0)