簡體   English   中英

Windows-執行不帶.exe擴展名的可執行文件(.exe)

[英]Windows - Executing an executable (.exe) without the .exe extension

我需要能夠在已重命名而沒有文件擴展名的Python中執行.exe文件(例如,假設.joe-它不代表我所知道的任何內容)。

假設我有“ HelloWorld.exe”,然后將其重命名為“ HelloWorld.joe”並需要執行。

環顧四周,os.system通常用於執行.exe文件,但是如果沒有.exe擴展名,我無法使其正常工作。

無法將文件重命名為具有.exe擴展名(或與此有關的任何內容),在這種“方案”中,我無權訪問可執行文件的源代碼。

您嘗試過subprocess.call嗎? 為我工作。 文件
例:

#renamed from MobilePASS.exe, runs the program
import subprocess
subprocess.call(["d:/MobilePASS.ubi"])

我無法想象打破Windows哲學的正當理由。 微軟一直說,在系統上,文件擴展名決定了文件的類型及其用法。 已經有許多跨平台的程序,例如,在類Unix系統上名為firefox ,在Windows系統上名為firefox.exe

編輯

就是說,Windows接受您提供的命令格式的命令,只要它具有正確的可執行格式即可。 因此,如果您創建一個程序HelloWorld.exe並將其重命名為HelloWorld.joe

  • 在提示符下鍵入HelloWorld.joe時,cmd.exe將啟動程序(在Windows XP和Windows 7上進行了測試)
  • 蟒2.7和3.4應使用啟動它要么os.system或與subprocess模塊(由eryksun確認)

不能使用os.system嚴重命名文件(微軟的意義上)通話,因為引擎蓋下, os.system使用cmd.exe 它是一個Microsoft程序,它查看文件擴展名以了解如何處理該文件擴展名,並且從不執​​行(作為exe)沒有exe擴展名的文件。

出於完全相同的原因,您將無法在shell=True使用子流程模塊。 但是當shell=False ,如zeller所說,它直接調用接受任何名稱作為有效可執行文件名稱的CreateProcess (假設它是...)。

暫無
暫無

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

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