当我尝试启动新进程时,它找到一个要执行的文件(与之前抛出不同的异常一样),但抛出异常访问被拒绝。 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;
}
这是异常文本
System.ComponentModel.Win32Exception (0x80004005): ApplicationName='/data/user/0/AlienChessAndroid.AlienChessAndroid/files/stockfish-8-armeabi-v7a', CommandLine='', CurrentDirectory='/data/user/0/AlienChessAndroid.AlienChessAndroid/files', Native error= Access denied at 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
最佳答案
尝试以各种方式处理我的问题时,我不小心找到了非常简单的问题解决方案。在我的代码之前缺少这两行。
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/