[英]run as administrator problem with py2exe
我遇到這個問題,我們將python項目編譯成帶有py2exe的exe,並且生成的exe不起作用,除非它以管理員身份執行。
我想問這是應該發生的? 因為有很多應用程序,我們可以運行而不是管理員,所以我有任何方式可以將我的python代碼轉換為這樣的應用程序...
非常感謝..
聽起來您的應用程序正在嘗試寫入基本用戶無權訪問的目錄; 很可能是“Program Files”目錄。 我相信Vista / Win7是不允許的,標准慣例是寫入用戶的appdata文件夾,以查找您可能希望存儲的任何用戶數據。
您可以使用ctypes
模塊可靠地獲取此目錄的位置,這是一個示例:
import ctypes
from ctypes import wintypes
def get_appdata_directory():
CSIDL_APPDATA = 0x001a
dll = ctypes.windll.shell32
app_data_directory = ctypes.create_unicode_buffer(wintypes.MAX_PATH)
found = dll.SHGetFolderPathW(0, CSIDL_APPDATA, 0, 0, app_data_directory)
# FYI: if `found` is False, then it failed to locate the appdata directory
# and app_data_directory.value is empty. So you might want to add some
# code here to verify that a valid path is going to be returned.
# This would probably only happen on older versions of windows,
# but, this is just a guess as I don't have any older OSs available
# for testing. (see my note below)
return app_data_directory.value
appdata = get_appdata_directory()
print(appdata)
# outputs something such as: 'C:\Users\bob\AppData'
注意:我相信appdata
文件夾是隨WinXP / Win2k引入的。 不確定WinME和之前,但是,我不相信你必須擔心這些早期操作系統的管理員限制。 如果你真的想要支持它們,你可以使用python的內置platform
模塊和一些條件,然后只需將用戶數據寫入Windows的古老版本的“Program Files”目錄。
我遇到了讓py2exe工作的嚴重問題。 幸運的是,我發現了優秀的PyInstaller不僅可以工作,而且還可以創建更小的可執行文件。 我沒有遇到你用PyInstaller提到的問題所以我建議嘗試一下。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.