Python启动exe文件错误

时间:2015-01-14 17:46:02

标签: 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已停止工作。程序导致程序无法正常工作。请关闭该计划。"。

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

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

有什么我想念的吗?

修改

经过一些修改和诊断后,我的exefile现在开始了,但我意识到如果它是由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是否具有管理员权限?

1 个答案:

答案 0 :(得分:0)

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

const String LocalUpdateFile = @".\Updates.dat";

所以,相反,如果我改变这个。 python启动exe工作正常。

const String LocalUpdateFile = @"D:\XX\Updates.dat";

但我真的很好奇为什么会这样。如果有人有任何解决方案,请告诉我。

谢谢!