2012-06-04 137 views
0

我創建了一個Windows應用程序,在其後端有訪問權限。問題是,當我安裝它時,它顯示操作必須使用可更新的查詢,當我嘗試插入或更新操作....在此之後,我更改了訪問數據庫所在的文件夾的權限。現在它工作正常。現在的問題是我安裝它的每臺計算機我需要更改程序文件中數據庫文件夾的寫權限。有沒有解決方案,我可以在安裝程序創建時爲我的文件夾設置權限。或任何其他解決方案你知道.....預先感謝訪問數據庫創建問題

回答

1

不要把你的數據庫在你的程序文件夾。
在最新的操作系統如Win7或Vista中,出於安全原因,此文件夾是隻讀的。

最好的地方是enum SpecialFolder.ApplicationData所標識的文件夾。
你用得到的物理路徑:

string commonAppData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 

內這條路,你應該爲你的應用程序專用的路徑。

string myDataPath = Path.Combine(commonAppData, "MyApplicationDataFolder"); 

只有當應用程序未被安裝軟件的用戶使用時,此方案纔有效。如果您需要多用戶訪問數據庫,則您自己創建本地磁盤上的文件夾或每個用戶可以訪問數據庫的網絡共享中的文件夾。

通常,將數據庫後端放置在用戶機器或網絡共享中的工作是爲安裝工具保留的。市場上有許多工具,免費和付費。我不知道你使用的是哪一種工具,我不能建議這個或那個。但是,當您選擇/使用一個時,您應該檢查是否存在以下基本功能:

  • 能夠引用Windows環境中存在的特殊文件夾。 (我的文檔,的ApplicationData等)
  • 能力在這些特殊文件夾(MyApplicationData)創建子文件夾
  • 能夠創建網絡共享或使用一個已經存在
  • 可以更新你的配置文件,你存儲您的 連接字符串(字符串替換)

如果部署工具按預期工作,你不必做你的應用程序中做任何事,你看你的配置文件中的ConnectionString並打開數據庫。

+0

在哪裏可以找到這個文件夾枚舉....我是否需要手動將數據庫文件在此文件夾中或者我需要寫一些代碼,使我的數據庫文件存儲在此文件夾 – mubashir9082

+0

枚舉在'環境。SpecialFolder'和它的值可以在[這裏]找到(http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx)。爲了部署數據庫,這取決於你如何安裝你的應用程序。如果您有安裝程序,那麼您應該在該工具中找到在特定系統文件夾中安裝文件所需的功能,如果您手動部署,則無任何問題。在每種情況下,請記住更新您的連接字符串以指向正確的位置。 – Steve

+0

我試過這個,但問題是它將程序文件中的數據庫訪問文件存儲在programdata文件夾中,但是它也沒有給數據庫的寫權限 – mubashir9082

0

創建一個內容完全相同的文本文件,並保存擴展名爲「.reg」的文件。

Windows Registry Editor Version 5.00 

[HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Access\Security\Trusted Locations\Location2] 
"Path"="C:\\Program Files\\Microsoft Office\\Office12\\ACCWIZ1\\" 
"Description"="Access default location: Wizard Databases" 

雙擊onthis測試此註冊表文件。它會在註冊表中創建一個新的條目。

用您的安裝程序保存reg文件,並使用安裝程序運行它。你也可以從c#代碼執行這個文件。

registry_hacks_reg

+0

如何做到這一點....我是新來的C# – mubashir9082