2014-03-19 165 views
0

我正在使用C#的Windows桌面應用程序中工作。其中我想實現某種功能,以便用戶只能在根文件夾中的文件夾內創建文件。以編程方式在特定文件夾中創建文件

假設如果我的根文件夾是A並且裏面有A1,A2,A3文件夾,用戶可以在文件夾A1,A2,A3中的任意文件夾中創建一個文件。但他不應該被允許直接創建一個文件A.

所以簡而言之,我想只在一個特定的文件夾中創建文件。有什麼辦法可以實現這個嗎?是否有可能使用shell腳本?

在此先感謝!

+1

是否要禁止在應用程序內部的此特定文件夾中創建文件?或者在系統範圍內阻止它?你還有什麼嘗試過? – mnme

+0

你試過利用'FileSystemWatcher'嗎? – Yahya

+0

@mnme:從應用程序內部.Bcoz文件夾A即根文件夾是以編程方式從應用程序創建的。 – user3222297

回答

0

創建一個用於創建文件的.net方法的包裝。然後實現一個黑名單(或白名單),您可以使用它來指定要阻止的文件夾(或在允許while-list的情況下)。

在啓動時,列表加載到List<string>,並用它包裝內,以確定是否要執行該操作

例如,如果您使用File.Create創建的文件;您的包裝可以像下面現在

public void CreateFile(string folderName, string fileName, IList<string> whiteList) 
{ 
    // can I create the file in this folder ???? 
    if (!whiteList.Any(f => f.Equals(folderName, StringComparison.InvariantCultureIgnoreCase))) 
    { 
    // No apparently not... I should now throw an exception 
    } 

    // create the file 
    File.Create(string.Format("{0}/{1}", folderName, fileName)).Dispose(); 

} 

當過您要創建的應用程序中的文件,使用CreateFile代替File.Create

+0

嗨..感謝您的代碼。但顯然這不是我所期待的。我在這裏沒有使用file.Create方法。用戶不應在Windows中創建文件。在Windows中,我們可以通過右擊並單擊新建來創建一個文件夾。我應該阻止以這種方式在根文件夾中創建文件! – user3222297

+0

嗨,根據以前的評論,我以爲你想控制應用程序內的行動。所以,如果你想限制用戶在父文件中創建文件,爲什麼不使用標準的Windows許可? - 乾杯 –

+0

通過使用標準的Windows權限,我們可以限制用戶只在特定的文件夾中創建文件嗎?對不起,但我不知道如何指定Windows權限。 – user3222297

0

在創建文件夾的時間,

您可以檢查父文件夾名稱...

例如:Directory.GetParent(「A \ A1」); 這會給你文件夾名稱A作爲DirectoryInfo名稱。

您可以將您的RootFolderName與GetParent Name進行比較,並限制從應用程序創建。

謝謝

+0

正如我所說的那樣,文件創建不是以編程方式完成的。用戶可以右鍵單擊並單擊new,並在本地創建一個文件。 – user3222297

+0

再次,我需要防止文件創建而不是文件夾創建。我需要確保文件不在根文件夾內創建,同時用戶必須能夠在根文件夾內創建文件夾。 – user3222297

相關問題