当我尝试启动新进程时,它会找到一个要执行的文件(与它抛出不同异常之前一样),但会抛出异常访问被拒绝。 Here 是一个类似的问题,但从可能有问题的答案中,只有权利和权限部分对我有意义。还有一个想法是不将 RedirectStandardOutput 设置为 true 以查找错误,所以我禁用了这一行。 我是否需要一些特殊的权限、 list 条目或类似的东西才能从我的应用程序在 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;
}

这是异常文本

最佳答案

尝试以各种方式处理我的问题时,我意外地找到了非常简单的问题解决方案。在我的代码之前缺少这两行。

string[] cmd = { "chmod", "744", Path.Combine(strToFolder, fileName) };
Java.Lang.Runtime.GetRuntime().Exec(cmd);

默认文件权限不允许执行该文件,因此必须对其进行更改。

关于c# - android 应用程序中 Process.Start() 上的访问被拒绝 (0x80004005),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44334015/

10-10 23:52