2009-08-17 94 views
0

多年來,Windows XP(32位)是我的開發桌面(個人項目)。我開發了許多業餘愛好項目,並將其作爲開源代碼分發,並且從未擔心過在Vista中檢查過它(我只用了一週的Vista)。但是我的用戶都沒有在Vista中抱怨過我的應用程序。移到Windows 7(64)進行開發。 UAC設置如何? [Windows應用程序]

現在我已經轉移到Windows 7 64位操作系統(RTM)。我正在使用Visual Studio 2008.我正在開發一個我正計劃銷售的應用程序。

我使用SQLite DB進行數據存儲,一切都很順利,直到我決定在我的筆記本電腦中安裝我的第一個版本。繁榮!應用程序沒有按預期工作。我發現即使我是管理員用戶,應用程序也無法寫入數據庫(它只是只讀)。

注意:在Windows 7中,即使登錄用戶具有管理員權限,如果進程(有時甚至在驅動器之間複製粘貼)需要管理員訪問權限,它也會提示您確認。不知道這是否是新的。忽略這是否古老。

當我以「以管理員身份運行」運行應用程序時,它工作正常。

app.manifest文件具有以下設置。

<requestedExecutionLevel level="asInvoker" uiAccess="false" /> 

我明白我可以將它更改爲以下

<requestedExecutionLevel level="asInvoker" uiAccess="false" /> 
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
<requestedExecutionLevel level="highestAvailable" uiAccess="false" /> 

我的問題是,如果我將設置更改爲「requireAdministrator」是否會影響誰不具有管理員previleages普通用戶?

如何讓我的DB可以爲普通用戶寫入?

此設置如何影響Windows XP用戶?

什麼是最好的配置,讓大家更新數據庫沒有任何問題?

這是我第一次面對這樣一個安全問題。任何建議?

注意:我將在每個可能的操作系統中測試此應用程序。我在Vista 32位操作系統(管理員用戶)中運行測試,它運行良好。但是我對Windows 7的使用經驗讓我感到困惑。

+1

您在哪裏存儲數據庫,以及如何創建它?我們有一個類似的場景,它在Windows 7中工作得很好,您只需將數據庫文件放置在普通用戶可寫入的位置(例如Application Data文件夾)中即可。 – 2009-08-17 19:26:23

+0

截至目前,我已將數據庫放在應用程序所在的同一文件夾中。 – Shoban 2009-08-17 19:29:14

+0

這就是你的問題。用戶對應用程序所在的文件夾沒有寫入權限。 使用ShGetFolderPath(http://msdn.microsoft.com/en-us/library/bb762181(VS.85).aspx)指定CSIDL_APPDATA以檢索路徑。 – 2009-08-18 04:59:40

回答

3
  1. 是的,普通用戶必須提供管理員憑證。
  2. 將數據庫安裝到用戶可寫入的位置,或使用服務/ IPC爲您寫入數據庫。
  3. 如果可能的話,用戶數據庫。您可以將每個用戶的內容存儲在用戶可寫的位置,如AppData。如果沒有,那麼使用服務/ IPC來爲你寫。
0

最好的辦法就是安裝虛擬機,使其成爲目標操作系統的安裝目標。在測試之前,你永遠不會知道會發生什麼。

+0

是測試了與朋友的Vista 32位操作系統的應用程序,它工作正常。但我對Windows 7的使用經驗讓我感到困惑。 – Shoban 2009-08-17 19:25:51

相關問題