2009-05-03 34 views
7

我有一個應用程序修改,以考慮VISTA中的UAC。 所以,現在的的.mdb(JET或訪問文件)位於ProgramData\MyApp\爲什麼虛擬化在MS Vista中的ProgramData文件夾?

我意識到,當我的應用程序讀取,第一次是從該位置做數據庫...但是,當我的應用程序是寫入數據庫...文件被虛擬化並進入Users\MyUser\AppData\Local\VirtualStore\ProgramData\MyApp。從現在開始,我的應用程序始終轉到磁盤中的虛擬化位置。

我的應用程序正在運行,但是如果我繼續這種方式,數據庫將以每個用戶爲基礎,並且我們確實需要與PC中的所有用戶共享數據庫。

我認爲在ProgramData文件夾下寫入文件不會觸發虛擬機制。

我錯過了什麼?

我需要在ProgramData下設置MyApp文件夾的權限??

如何在安裝時間上做到這一點?

感謝的人...

更多信息: 使用VS2003 VB.NET的VS安裝項目開發。

+1

「Vista」不是首字母縮寫,所以只有第一個字母應該大寫。 – 2009-05-03 21:45:58

回答

2

您很可能需要在安裝期間爲所有用戶設置寫入權限。

要測試,請刪除虛擬化文件夾,手動設置ProgramData \ MyApp文件夾和文件的權限並查看是否有效。

至於如何在安裝過程中務實地做到這一點,這取決於您使用的是什麼技術。

+0

Yeap,它只是寫權限。另一個棘手的事情是,從VS 2003安裝項目中執行MSI,並使用自定義操作(設置文件夾權限)在Vista中導致錯誤,因爲CustomActions作爲運行安裝程序的高架用戶登錄的普通用戶運行。您必須使用ORCA編輯MSI文件以將「No Impersonate」的標誌設置爲true。爲此,請在「自定義操作」表的「安裝」行的「類型」列中設置3073作爲值。 – Romias 2009-05-05 13:50:18

1

我在這裏也遇到了麻煩,看來vista一旦決定虛擬化文件,停止它的唯一方法就是刪除虛擬文件。 下次您使用它時,它將使用ProgramData文件夾。

相關問題