FileSystemRights 列舉
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
定義建立存取規則和稽核規則時要使用的存取權限。
此列舉支援其成員值的位元組合。
public enum class FileSystemRights
[System.Flags]
public enum FileSystemRights
[System.Flags]
[System.Security.SecurityCritical]
public enum FileSystemRights
[<System.Flags>]
type FileSystemRights =
[<System.Flags>]
[<System.Security.SecurityCritical>]
type FileSystemRights =
Public Enum FileSystemRights
- 繼承
- 屬性
欄位
AppendData | 4 | 指定將資料附加至檔案結尾的權限。 |
ChangePermissions | 262144 | 指定變更與檔案或資料夾關聯之安全性規則和稽核規則的權限。 |
CreateDirectories | 4 | 指定建立資料夾的許可權 此許可權需要 |
CreateFiles | 2 | 指定建立檔案的權限。 此許可權需要 |
Delete | 65536 | 指定刪除資料夾或檔案的權限。 |
DeleteSubdirectoriesAndFiles | 64 | 指定刪除資料夾和該資料夾內包含之任何檔案的權限。 |
ExecuteFile | 32 | 指定執行應用程式檔案的權限。 |
FullControl | 2032127 | 指定對資料夾或檔案執行完全控制,並修改存取控制 (Access control) 和稽核規則的權限。 這個值表示對檔案執行任何作業的權限,其為這個列舉型別中所有權限的組合。 |
ListDirectory | 1 | 指定讀取目錄內容的權限。 |
Modify | 197055 | 指定讀取、寫入、列出資料夾內容,刪除資料夾及檔案並執行應用程式檔案的權限。 這個權限包括 ReadAndExecute 權限、Write 權限及 Delete 權限。 |
Read | 131209 | 指定以唯讀方式開啟和複製資料夾或檔案的權限。 這個權限包括 ReadData 權限、ReadExtendedAttributes 權限、ReadAttributes 權限及 ReadPermissions 權限。 |
ReadAndExecute | 131241 | 指定以唯讀方式開啟和複製資料夾或檔案,以及執行應用程式檔案的權限。 這個權限包括 Read 權限和 ExecuteFile 權限。 |
ReadAttributes | 128 | 指定從資料夾或檔案開啟和複製檔案系統屬性的權限。 例如,這個值指定檢視檔案建立或修改日期的權限。 這不包括讀取資料、擴充之檔案系統屬性、存取規則和稽核規則的權限。 |
ReadData | 1 | 指定開啟和複製檔案或資料夾的權限。 這不包括讀取檔案系統屬性、擴充之檔案系統屬性、存取規則和稽核規則的權限。 |
ReadExtendedAttributes | 8 | 指定從資料夾或檔案開啟和複製擴充之檔案系統屬性的權限。 例如,這個值指定檢視作者和內容資訊的權限。 這不包括讀取資料、檔案系統屬性、存取規則和稽核規則的權限。 |
ReadPermissions | 131072 | 指定從資料夾或檔案開啟和複製存取規則和稽核規則的權限。 這不包括讀取資料、檔案系統屬性及擴充之檔案系統屬性的權限。 |
Synchronize | 1048576 | 指定應用程式是否可以等待檔案控制代碼 (File Handle) 與 I/O 作業的完成同步。 若允許存取權,會自動設定此值;若拒絕存取權,則會自動排除此值。 |
TakeOwnership | 524288 | 指定變更資料夾或檔案擁有人的權限。 請注意,資源的擁有人對該資源具有完全存取權。 |
Traverse | 32 | 指定列出資料夾內容並執行該資料夾內包含之應用程式的權限。 |
Write | 278 | 指定建立資料夾和檔案,以及將資料新增至檔案或從檔案中移除資料的權限。 這個權限包括 WriteData 權限、AppendData 權限、WriteExtendedAttributes 權限及 WriteAttributes 權限。 |
WriteAttributes | 256 | 指定開啟檔案系統屬性並將其寫入資料夾或檔案的權限。 這不包括寫入資料、擴充之屬性、存取規則和稽核規則的能力。 |
WriteData | 2 | 指定開啟和寫入檔案或資料夾的權限。 這不包括開啟和寫入檔案系統屬性、擴充之檔案系統屬性、存取規則和稽核規則的權限。 |
WriteExtendedAttributes | 16 | 指定開啟擴充之檔案系統屬性並將其寫入資料夾或檔案的權限。 這不包括寫入資料、屬性、存取規則和稽核規則的能力。 |
範例
下列範例會 FileSystemRights
使用 列舉來指定存取規則,然後從檔案中移除存取規則。 您必須提供有效的使用者或群組帳戶,才能執行這個範例。
using namespace System;
using namespace System::IO;
using namespace System::Security::AccessControl;
// Adds an ACL entry on the specified file for the specified account.
void AddFileSecurity(String^ fileName, String^ account,
FileSystemRights rights, AccessControlType controlType)
{
// Get a FileSecurity object that represents the
// current security settings.
FileSecurity^ fSecurity = File::GetAccessControl(fileName);
// Add the FileSystemAccessRule to the security settings.
fSecurity->AddAccessRule(gcnew FileSystemAccessRule
(account,rights, controlType));
// Set the new access settings.
File::SetAccessControl(fileName, fSecurity);
}
// Removes an ACL entry on the specified file for the specified account.
void RemoveFileSecurity(String^ fileName, String^ account,
FileSystemRights rights, AccessControlType controlType)
{
// Get a FileSecurity object that represents the
// current security settings.
FileSecurity^ fSecurity = File::GetAccessControl(fileName);
// Remove the FileSystemAccessRule from the security settings.
fSecurity->RemoveAccessRule(gcnew FileSystemAccessRule
(account,rights, controlType));
// Set the new access settings.
File::SetAccessControl(fileName, fSecurity);
}
int main()
{
try
{
String^ fileName = "test.xml";
Console::WriteLine("Adding access control entry for " + fileName);
// Add the access control entry to the file.
AddFileSecurity(fileName, "MYDOMAIN\\MyAccount",
FileSystemRights::ReadData, AccessControlType::Allow);
Console::WriteLine("Removing access control entry from " + fileName);
// Remove the access control entry from the file.
RemoveFileSecurity(fileName, "MYDOMAIN\\MyAccount",
FileSystemRights::ReadData, AccessControlType::Allow);
Console::WriteLine("Done.");
}
catch (Exception^ ex)
{
Console::WriteLine(ex->Message);
}
}
using System;
using System.IO;
using System.Security.AccessControl;
namespace FileSystemExample
{
class FileExample
{
public static void Main()
{
try
{
string fileName = "test.xml";
Console.WriteLine("Adding access control entry for "
+ fileName);
// Add the access control entry to the file.
AddFileSecurity(fileName, @"DomainName\AccountName",
FileSystemRights.ReadData, AccessControlType.Allow);
Console.WriteLine("Removing access control entry from "
+ fileName);
// Remove the access control entry from the file.
RemoveFileSecurity(fileName, @"DomainName\AccountName",
FileSystemRights.ReadData, AccessControlType.Allow);
Console.WriteLine("Done.");
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
// Adds an ACL entry on the specified file for the specified account.
public static void AddFileSecurity(string fileName, string account,
FileSystemRights rights, AccessControlType controlType)
{
// Get a FileSecurity object that represents the
// current security settings.
FileSecurity fSecurity = File.GetAccessControl(fileName);
// Add the FileSystemAccessRule to the security settings.
fSecurity.AddAccessRule(new FileSystemAccessRule(account,
rights, controlType));
// Set the new access settings.
File.SetAccessControl(fileName, fSecurity);
}
// Removes an ACL entry on the specified file for the specified account.
public static void RemoveFileSecurity(string fileName, string account,
FileSystemRights rights, AccessControlType controlType)
{
// Get a FileSecurity object that represents the
// current security settings.
FileSecurity fSecurity = File.GetAccessControl(fileName);
// Remove the FileSystemAccessRule from the security settings.
fSecurity.RemoveAccessRule(new FileSystemAccessRule(account,
rights, controlType));
// Set the new access settings.
File.SetAccessControl(fileName, fSecurity);
}
}
}
Imports System.IO
Imports System.Security.AccessControl
Module FileExample
Sub Main()
Try
Dim fileName As String = "test.xml"
Console.WriteLine("Adding access control entry for " & fileName)
' Add the access control entry to the file.
AddFileSecurity(fileName, "DomainName\AccountName", _
FileSystemRights.ReadData, AccessControlType.Allow)
Console.WriteLine("Removing access control entry from " & fileName)
' Remove the access control entry from the file.
RemoveFileSecurity(fileName, "DomainName\AccountName", _
FileSystemRights.ReadData, AccessControlType.Allow)
Console.WriteLine("Done.")
Catch e As Exception
Console.WriteLine(e)
End Try
End Sub
' Adds an ACL entry on the specified file for the specified account.
Sub AddFileSecurity(ByVal fileName As String, ByVal account As String, _
ByVal rights As FileSystemRights, ByVal controlType As AccessControlType)
' Get a FileSecurity object that represents the
' current security settings.
Dim fSecurity As FileSecurity = File.GetAccessControl(fileName)
' Add the FileSystemAccessRule to the security settings.
Dim accessRule As FileSystemAccessRule = _
New FileSystemAccessRule(account, rights, controlType)
fSecurity.AddAccessRule(accessRule)
' Set the new access settings.
File.SetAccessControl(fileName, fSecurity)
End Sub
' Removes an ACL entry on the specified file for the specified account.
Sub RemoveFileSecurity(ByVal fileName As String, ByVal account As String, _
ByVal rights As FileSystemRights, ByVal controlType As AccessControlType)
' Get a FileSecurity object that represents the
' current security settings.
Dim fSecurity As FileSecurity = File.GetAccessControl(fileName)
' Remove the FileSystemAccessRule from the security settings.
fSecurity.RemoveAccessRule(New FileSystemAccessRule(account, _
rights, controlType))
' Set the new access settings.
File.SetAccessControl(fileName, fSecurity)
End Sub
End Module
備註
列舉 FileSystemRights 會指定特定使用者帳戶允許的檔案系統動作,以及特定使用者帳戶的檔案系統動作稽核哪些檔案系統動作。
FileSystemRights使用 類別建立存取規則 FileSystemAccessRule 或使用 FileSystemAuditRule 類別建立稽核規則時,請使用 列舉。
此列舉包含數個細微的系統許可權值,以及這些細微值組合的數個值。 使用 、 Read
和 Write
等 FullControl
組合值會比較容易,而不是個別指定每個元件值。
CreateDirectories
和 CreateFiles
許可權需要 Synchronize
許可權。 如果您在建立檔案或目錄時未明確設定 Synchronize
值,系統會自動為您設定此值。