這是我第一次提出有關超級用戶的問題(儘管我經常提到堆疊溢出和超級用戶),所以如果我犯了任何錯誤或問題不清楚,請耐心等待,我將根據需要修復任何錯誤或澄清。
我開發了一個應用程式(例如 MyApp),並創建了一個安裝程序,將主要可執行文件及其相關依賴項(資料夾和文件)安裝到C:\Program Files (x86)\MyAppFolder\
.
問題是,在運行時,它應該在自己的目錄(資料夾)中建立日誌等檔案MyAppFolder
。經過一番挖掘後,我認為這是因為它沒有以管理員身份運行(我的用戶是管理員僅供參考) - 或者更確切地說,我想這是因為只有管理員可以寫入\Program Files
。如果我以管理員身份運行我的應用程序,它就能夠寫入所需的文件和資料夾。
但是理想情況下應用程式不應該能夠在自己的資料夾中寫入嗎?即使它不是以管理員權限運行?我在這裡缺少什麼?
提前致謝。
答案1
Windows中沒有「程式自己的資料夾」這樣的概念。
存在的概念是“程式的當前資料夾”,預設是運行程式的資料夾。程式擁有的權限來自啟動它的使用者帳戶,而不是來自它所在的位置。
這表示當程式從程式檔案執行時,它預設在您的帳戶下執行,並且預設不會以管理員身分執行。所以它沒有權限在它所在的資料夾中寫入。
對於程式來說,將其檔案寫入不受保護的資料夾中是有意義的。通常的位置是在裡面建立您自己的資料夾
C:\Users\USERNAME\AppData\Local
,也可以在環境變數中使用%LOCALAPPDATA%
,但這可以是您選擇的任何地方。