我已經創建了一個應用程序,它將一些數據寫入安裝它的目錄的根文件夾(在Program Files中)。但在Windows Vista下,程序無法寫入目錄,因爲UAC限制了管理權限。如何在安裝時使我的軟件需要管理權限?
我需要能夠做到以下幾點
- 寫在程序安裝在程序文件夾中的文件。
如果軟件以管理權限運行,那麼這是可能的。但我不知道如何修改我的設置,使其始終以管理權限運行。
有什麼方法或建議我可以做到這一點?
我已經創建了一個應用程序,它將一些數據寫入安裝它的目錄的根文件夾(在Program Files中)。但在Windows Vista下,程序無法寫入目錄,因爲UAC限制了管理權限。如何在安裝時使我的軟件需要管理權限?
我需要能夠做到以下幾點
如果軟件以管理權限運行,那麼這是可能的。但我不知道如何修改我的設置,使其始終以管理權限運行。
有什麼方法或建議我可以做到這一點?
這聽起來像你的問題的標題問如何使具有管理權限安裝程序運行,但你的解釋詢問如何使具有管理權限的程序運行,因此它可以在運行時寫的程序文件。哪一個?
如果你真的只是想安裝到具有管理權限運行,社區維基答案是非常準確的。確保您的安裝程序有一個明顯的名稱,如「Setup.exe」,Vista使用「啓發式」來決定您的安裝程序必須以管理員身份運行。
如果你真的想寫入程序文件在運行時,不要。這是Vista的官方建議:改爲寫入用戶的AppData目錄。如果你有太多的代碼來重寫,你可以包含一個清單文件,這個文件強制Vista在運行你的應用程序時提示管理權限。如果您的應用名爲「app.exe」,請包含一個包含以下內容的「app.exe.manifest」文件:
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestversion="1.0">
<assemblyidentity version="1.0.0.0" processorarchitecture="X86" name="app.exe" type="win32">
<description>My Application</description>
<trustinfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedprivileges>
<requestedexecutionlevel level="requireAdministrator">
</requestedexecutionlevel>
</requestedprivileges>
</security>
</trustinfo>
最好的辦法是不要在「程序文件」下寫任何文件。無論你想寫什麼,最好寫入Windows註冊表。然後,您必須修改程序以從註冊表中讀取信息而不是該文件。但真的,這是註冊管理機構的職責。
如果你不知道這個文件是什麼,你怎麼知道它屬於在註冊表中?如果它是一個配置文件(首選註冊表)呢? – GalacticCowboy 2008-12-08 02:07:33
我以爲Vista處理這個「看起來像安裝程序」的程序。您是否使用NSIS或Inno等安裝程序?我認爲Inno有辦法要求這個。但不知道。
:編輯: 從上管理員/ [配置]特權所需部分中的INNO幫助:
有效值: 無,高級用戶,或管理員
默認值: 管理員
描述: 此指令的作用取決於用戶正在運行的Windows版本:
在Windows Vista和更高版本上:
此指令影響在安裝啓動時是否請求提升權限(通過用戶帳戶控制對話框)。
設置爲admin(默認值)或poweruser時,安裝程序將始終以管理權限運行。如果安裝程序是由非特權用戶啓動的,則Windows將向具有管理權限的帳戶請求密碼,然後安裝程序將在該帳戶下運行。
設置爲無時,如果安裝程序由管理員組的成員啓動,則它將僅以管理特權運行。除非您確定您的安裝能夠在無特權帳戶上成功運行,否則請勿使用此設置。
在Windows NT/2000/XP/2003:
這個指令指定運行安裝所需的最低用戶權限。
當設置爲admin(默認值)時,只有當用戶是管理員組的成員時,安裝程序纔會運行。否則,它將顯示以下消息並退出:「安裝此程序時,您必須以管理員身份登錄。」
當設置爲高級用戶時,只有當用戶是Administrators或Power Users組的成員時纔會運行安裝程序。否則,它會顯示以下消息並退出:「你必須以管理員或Power Users組的成員安裝該程序時登錄。」
當設置爲無,安裝程序將不檢查用戶的組成員。除非您確定您的安裝能夠在無特權帳戶上成功運行,否則請勿使用此設置。
在Windows 95/98/ME:
這個指令對這些版本的Windows沒有任何影響。
我想我需要澄清我的問題。我的意思是如何進行安裝,標記程序以管理權限運行。 – 2008-12-08 05:04:01