簡體   English   中英

以py2exe作為管理員問題運行

[英]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提到的問題所以我建議嘗試一下。

http://www.pyinstaller.org/

暫無
暫無

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

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