c# - Android 应用程序中的 Process.Start() 访问被拒绝 (0x80004005)

标签 c# android xamarin process

当我尝试启动新进程时,它找到一个要执行的文件(与之前抛出不同的异常一样),但抛出异常访问被拒绝。 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/

相关文章:

c# - 我如何等待异步 ping 负载在 C# 中全部完成?

android - 是否可以在android中使用Tesseract检测图像中的文本

java - 如何创建 Android 通知?

c# - Android 上的数据 GridView

c# - 如何使用正则表达式或 linq 替换 c# 中的特定字符串

c# - Docusign 分页信封 JSON 数据

android - 如何在android中更改日期选择器对话框的默认年份(1900)?

xamarin - 如何在 XAML 上设置 ResourceDictionary FontSize?

c# - iOS 设计具有可定制内容的 UITableViewCell

c# - 将 System.Array 转换为字符串 []