2009-06-02 33 views
4

那麼,如果我想將數據存儲應用程序的計算機範圍,我只是用.NET Windows應用商店的數據

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) 

如果我想每個存儲用戶數據,我使用

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) 

但什麼如果我想保存每個應用程序實例的數據?我可以使用該應用程序存儲在但「程序文件」文件夾不是這種類型的數據存儲的,如果我的理解對不對所作的文件夾...

編輯:爲了澄清我的意思,如果我安裝應用程序2次在不同的文件夾中...沒有實例運行抱歉。

+0

是否例如意味着命名實例,做你想要重用的數據這些實例還是您想要存儲的數據只是臨時的? – crauscher 2009-06-02 10:57:53

+0

爲了澄清我的意思,如果我在不同的文件夾中安裝應用程序2次...沒有運行對不起的實例。 – Peter 2009-06-02 11:03:19

回答

2

我不知道有任何其他應用程序這樣做。

如果我運行Visual Studio的兩個副本,比如說,我希望關閉的最後一個實例的設置保持不變。

如果您爲實例指定唯一的ID(GUID),那麼您下次運行該應用程序時如何重用該值?或者你想在每次運行應用程序時獲得一組新的值?

如果你想重用,你可以創建編號的子目錄(1,2,3,4等),每次運行的應用程序中編寫一個鎖定文件到該目錄。然後檢查是否存在鎖定文件並增加數字,直到找到解鎖的文件夾。

UPDATE

在註釋中加入光 - 爲什麼沒有得到可執行文件的路徑,並根據該創建一個文件夾?

如果用戶沒有權利到該文件夾​​你就必須建立某種形式的位置和GUID(說),你再附加到應用程序設置和用戶設置路徑之間的映射。

1

爲什麼不將數據存儲在臨時目錄Path.GetTempPath中。您可以爲您的應用程序使用子文件夾,併爲您的實例使用另一個子文件夾(可能是Guid作爲名稱)。我將實現一些實現了IDisposable的管理器類,以允許在應用程序關閉時刪除實例路徑。

0

如果需要執行此操作,請在用戶數據文件夾或機器數據文件夾下創建實例文件夾。您的應用程序可以在退出時刪除任何不需要的數據。儘管@ChrisF對大多數通常的行爲是正確的。

0

一種可能性將是第一次生成一個唯一的ID程序運行和它存儲在某處特定的程序(可能是本地配置文件)。

然後,當你要訪問的文件的應用程序的特定副本,只需使用

System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "\" + uniqueid); 

System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "\" + uniqueid);