C# Python启动exe文件错误
我已经用C#编写了一个.exe文件,如果我手动(双击)启动它,它可以正常工作,但每次我都试图用python打开它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已停止工作。某个程序导致程序停止正常工作。请关闭该程序。” 现在让我困惑的是,如果我
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,而它可能不运行该程序?