2008-12-08 27 views
2

我已經創建了一個應用程序,它將一些數據寫入安裝它的目錄的根文件夾(在Program Files中)。但在Windows Vista下,程序無法寫入目錄,因爲UAC限制了管理權限。如何在安裝時使我的軟件需要管理權限?

我需要能夠做到以下幾點

  1. 寫在程序安裝在程序文件夾中的文件。

如果軟件以管理權限運行,那麼這是可能的。但我不知道如何修改我的設置,使其始終以管理權限運行。

有什麼方法或建議我可以做到這一點?

+0

我想我需要澄清我的問題。我的意思是如何進行安裝,標記程序以管理權限運行。 – 2008-12-08 05:04:01

回答

1

這聽起來像你的問題的標題問如何使具有管理權限安裝程序運行,但你的解釋詢問如何使具有管理權限的程序運行,因此它可以在運行時寫的程序文件。哪一個?

如果你真的只是想安裝到具有管理權限運行,社區維基答案是非常準確的。確保您的安裝程序有一個明顯的名稱,如「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> 
0

最好的辦法是不要在「程序文件」下寫任何文件。無論你想寫什麼,最好寫入Windows註冊表。然後,您必須修改程序以從註冊表中讀取信息而不是該文件。但真的,這是註冊管理機構的職責。

+0

如果你不知道這個文件是什麼,你怎麼知道它屬於在註冊表中?如果它是一個配置文件(首選註冊表)呢? – GalacticCowboy 2008-12-08 02:07:33

1

我以爲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沒有任何影響。

相關問題