C# Python启动exe文件错误

C# Python启动exe文件错误,c#,python,C#,Python,我已经用C#编写了一个.exe文件,如果我手动(双击)启动它,它可以正常工作,但每次我都试图用python打开它 import os os.system('"D:\\XX\MyFile.exe"') 我也试过: import subprocess exefile = 'D:\\XX\\MyFile.exe' subprocess.call([exefile]) 程序立即崩溃,并显示“MyFile.exe已停止工作。某个程序导致程序停止正常工作。请关闭该程序。” 现在让我困惑的是,如果我

我已经用C#编写了一个.exe文件,如果我手动(双击)启动它,它可以正常工作,但每次我都试图用python打开它

import  os
os.system('"D:\\XX\MyFile.exe"')
我也试过:

import subprocess 

exefile = 'D:\\XX\\MyFile.exe'
subprocess.call([exefile])
程序立即崩溃,并显示“MyFile.exe已停止工作。某个程序导致程序停止正常工作。请关闭该程序。

现在让我困惑的是,如果我手动运行它,它会工作,但当我试图通过Python启动它时,它失败了

C#应用程序只是一个更新程序,我编写它是为了检查pythonscripts的更新。它有一个.dll,其中包含更新例程和加载(.dat)文件以获取信息的表单

有什么我错过的吗

编辑:

经过一些修改和诊断,我的exe文件现在启动了,但我意识到如果它是由Python启动的,exe无法在我的C#应用程序中执行以下功能

private UpdateSaveFile DecodeSaveFile(string LocalUpdateFile)
    {
        FileStream localFileStream = null;
        BinaryFormatter decoder = null;
        try
        {
            localFileStream = File.Open(LocalUpdateFile, FileMode.Open, FileAccess.Read);
            decoder = new BinaryFormatter();
            return (UpdateSaveFile)decoder.Deserialize(localFileStream);
        }
        catch (Exception e)
        {
            throw new InvalidDataException("The local update info file is corrupt!", e);
        }
        finally
        {
            if (localFileStream != null)
                localFileStream.Dispose();
        }

    }
现在,每当我从python运行exefile时,它都会抛出“本地更新信息文件已损坏”。但是,如果我手动运行exefile(不使用python)/cmd提示符,它就可以正常工作


有人知道吗?是因为管理员权限吗?python启动的exe是否具有管理员权限?

好的,我找到了罪犯。所以我有一个类似这样的字符串:它应该查看文件“Updates.dat”的当前目录。但是由于某些原因,如果我通过Python启动exe。它无法识别“\”但如果我手动运行它,就可以了。这真让我困惑

const String LocalUpdateFile = @".\Updates.dat";
所以,如果我改成这个。python启动的exe工作正常

const String LocalUpdateFile = @"D:\XX\Updates.dat";
但我真的很好奇为什么会这样。。如果有人有任何解决办法,请告诉我


谢谢

您之所以要执行
exefile='%s''%D:\\XX\\MyFile.exe'
而不是
exefile='D:\\XX\\MyFile.exe'
?在第一个代码块中有四个引号对我来说似乎很奇怪。你试过
os.system(“D:\\XX\MyFile.exe”)
吗?我认为
os.system(r'D:\XX\MyFile.exe')
更好为什么不仅仅是
import subprocess subprocess.Popen([r“MyFile.exe”]
?你能试一下吗?我试过上面所有的注释,但都是一样的:(我是否必须为exe指定任何内容?因为我的程序有一个.dll,而它可能不运行该程序?