簡體   English   中英

在Android應用程序中的Process.Start()上訪問被拒絕(0x80004005)

[英]Access denied (0x80004005) on Process.Start() in android app

當我嘗試啟動新進程時,它會找到一個要執行的文件(就像它之前拋出不同的異常一樣),但會拋出異常訪問被拒絕。 是一個類似的問題,但只有權利和權利部分對我來說可能是一個問題的答案。 還有一個想法是不將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 ='/ data / user / 0 / AlienChessAndroid .AlienChessAndroid / files',Native error =在/ Users / builder / data / lanes / 4009 / 3a62f1ea / source / mono / mcs /中的System.Diagnostics.Process.StartWithCreateProcess(System.Diagnostics.ProcessStartInfo startInfo)[0x0018b]中拒絕訪問類/系統/ System.Diagnostics程序/ Process.cs:737

試圖以各種方式處理我的問題我不小心解決了我的問題。 在我的代碼之前,這兩行丟失了。

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

默認文件權限不允許執行文件,因此必須更改。

我的猜測是你所做的並不是你想要實現的目標。
您正在使用本機java庫文件(stockfish-8-armeabi-v7a)啟動進程。
這不是您使用本機庫的方式(必須使用PInvoke)。

這里這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM