FileIOPermission 類別

定義

警告

Code Access Security is not supported or honored by the runtime.

控制存取檔案和資料夾的能力。 此類別無法獲得繼承。

public ref class FileIOPermission sealed : System::Security::CodeAccessPermission, System::Security::Permissions::IUnrestrictedPermission
public sealed class FileIOPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public sealed class FileIOPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Serializable]
public sealed class FileIOPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class FileIOPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
type FileIOPermission = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
[<System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type FileIOPermission = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
[<System.Serializable>]
type FileIOPermission = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type FileIOPermission = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
Public NotInheritable Class FileIOPermission
Inherits CodeAccessPermission
Implements IUnrestrictedPermission
繼承
FileIOPermission
屬性
實作

範例

下列範例說明使用的程序 FileIOPermission代碼。 在下列兩行程式代碼之後,物件 f 代表讀取用戶端計算機本機磁碟上所有檔案的許可權。 然後,程式代碼範例會要求許可權來判斷應用程式是否具有讀取檔案的許可權。

FileIOPermission^ f = gcnew FileIOPermission( PermissionState::None );
f->AllLocalFiles = FileIOPermissionAccess::Read;
try
{
    f->Demand();
}
catch (SecurityException^ s)
{
    Console::WriteLine(s->Message);
}
FileIOPermission f = new FileIOPermission(PermissionState.None);
f.AllLocalFiles = FileIOPermissionAccess.Read;
try
{
    f.Demand();
}
catch (SecurityException s)
{
    Console.WriteLine(s.Message);
}
Dim f As New FileIOPermission(PermissionState.None)
f.AllLocalFiles = FileIOPermissionAccess.Read
Try
    f.Demand()
Catch s As SecurityException
    Console.WriteLine(s.Message)
End Try

在下列兩行程式代碼之後,物件 f2 代表讀取 C:\test_r的許可權,以及讀取和寫入至 C:\example\out.txt。 ReadWrite 代表先前所述的檔案/資料夾許可權。 建立許可權之後,程式代碼會要求許可權來判斷應用程式是否有權讀取和寫入檔案。

FileIOPermission^ f2 = gcnew FileIOPermission( FileIOPermissionAccess::Read,"C:\\test_r" );
f2->AddPathList( (FileIOPermissionAccess) (FileIOPermissionAccess::Write | FileIOPermissionAccess::Read), "C:\\example\\out.txt" );
try
{
    f2->Demand();
}
catch (SecurityException^ s)
{
    Console::WriteLine(s->Message);
}
FileIOPermission f2 = new FileIOPermission(FileIOPermissionAccess.Read, "C:\\test_r");
f2.AddPathList(FileIOPermissionAccess.Write | FileIOPermissionAccess.Read, "C:\\example\\out.txt");
try
{
    f2.Demand();
}
catch (SecurityException s)
{
    Console.WriteLine(s.Message);
}
Dim f2 As New FileIOPermission(FileIOPermissionAccess.Read, "C:\test_r")
f2.AddPathList(FileIOPermissionAccess.Write Or FileIOPermissionAccess.Read, "C:\example\out.txt")
Try
    f2.Demand()
Catch s As SecurityException
    Console.WriteLine(s.Message)
End Try

備註

警告

程式代碼存取安全性 (CAS) 在所有版本的 .NET Framework 和 .NET 中已被取代。 使用 CAS 相關 API 時,最新版本的 .NET 不會接受 CAS 批注,併產生錯誤。 開發人員應尋求替代方案來完成安全性工作。

此許可權可區分下列四種類型的檔案 IO 存取:FileIOPermissionAccess

  • Read:讀取檔案內容的存取權,或存取檔案的相關信息,例如其長度或上次修改時間。

  • Write:寫入檔案內容的存取權,或存取權以變更檔案的相關信息,例如其名稱。 也允許刪除和覆寫。

  • Append:只能寫入檔案結尾的能力。 無法讀取。

  • PathDiscovery:存取路徑本身中的資訊。 這有助於保護路徑中的敏感性資訊,例如用戶名稱,以及路徑中所顯示之目錄結構的相關信息。 這個值不能存取由路徑表示的檔案或資料夾。

注意

Write 與元件存取權類似於授與完全信任。 如果應用程式不應該寫入檔案系統,則它不應該有 Write 存取權。

所有這些許可權都是獨立的,這表示某個許可權不代表另一個許可權。 例如,Write許可權不代表 或Append的許可權Read。 如果需要多個許可權,則可以使用位 OR 結合,如下列程式代碼範例所示。 檔案許可權是以標準絕對路徑定義;呼叫應該一律使用標準檔案路徑進行。

FileIOPermission 描述檔案和資料夾的受保護作業。 類別 File 有助於提供檔案和資料夾的安全存取。 建立檔案的句柄時,會執行安全性存取檢查。 藉由在建立時進行檢查,安全性檢查的效能影響會降到最低。 開啟檔案會發生一次,而讀取和寫入可能會多次發生。 一旦開啟檔案,就不會進行進一步的檢查。 如果對象傳遞至不受信任的呼叫端,可能會誤用它。 例如,檔案句柄不應該儲存在具有較少許可權的程式代碼可以存取它們的公用全域靜態中。

FileIOPermissionAccess 會指定可在檔案或資料夾上執行的動作。 此外,這些動作可以使用位 OR 結合,以形成複雜的實例。

存取資料夾表示存取它包含的所有檔案,以及存取其子資料夾中的所有檔案和資料夾。 例如, Read 存取 C:\folder1\ 表示 Read 存取 C:\folder1\file1.txt、C:\folder1\folder2\、C:\folder1\folder2\file2.txt 等等。

注意

在 .NET Framework 4 之前的 .NET Framework 版本中,您可以使用 CodeAccessPermission.Deny 方法來防止不小心透過信任的程式代碼存取系統資源。 Deny 現在已過時,而且資源存取權現在只由元件的授與許可權集決定。 若要限制檔案的存取權,您必須在沙箱中執行部分信任的程式代碼,並只將許可權指派給允許程式代碼存取的資源。 如需在沙盒中執行應用程式的相關信息,請參閱 如何:在沙盒中執行部分信任的程序代碼

建構函式

FileIOPermission(FileIOPermissionAccess, AccessControlActions, String)
已淘汰.

以針對指定檔案或目錄的指定存取權限和檔案控制資訊的指定存取權限,初始化 FileIOPermission 類別的新執行個體。

FileIOPermission(FileIOPermissionAccess, AccessControlActions, String[])
已淘汰.

以針對指定檔案和目錄的指定存取權限和檔案控制資訊的指定存取權限,初始化 FileIOPermission 類別的新執行個體。

FileIOPermission(FileIOPermissionAccess, String)
已淘汰.

初始化具有指定檔案或目錄之指定存取權的 FileIOPermission 類別的新執行個體。

FileIOPermission(FileIOPermissionAccess, String[])
已淘汰.

初始化具有指定檔案及目錄之指定存取權的 FileIOPermission 類別的新執行個體。

FileIOPermission(PermissionState)
已淘汰.

依照指定使用完全限制或無限制的權限,初始化 FileIOPermission 類別的新執行個體。

屬性

AllFiles
已淘汰.

取得或設定允許的所有檔案存取。

AllLocalFiles
已淘汰.

取得或設定允許的所有本機檔案存取。

方法

AddPathList(FileIOPermissionAccess, String)
已淘汰.

將指定的檔案或目錄存取加入權限的現有狀態。

AddPathList(FileIOPermissionAccess, String[])
已淘汰.

將指定的檔案和目錄存取加入權限的現有狀態。

Assert()
已淘汰.

宣告即使堆疊中較高層的呼叫端未獲得資源存取權限,呼叫程式碼仍可透過呼叫這個方法的程式碼要求權限,來存取受保護的資源。 使用 Assert() 會造成安全性問題。

(繼承來源 CodeAccessPermission)
Copy()
已淘汰.

建立並傳回目前權限的相同複本。

Demand()
已淘汰.

如果在呼叫堆疊中較高的所有呼叫端都尚未被授與由目前執行個體所指定之權限,則會在執行階段強制執行 SecurityException

(繼承來源 CodeAccessPermission)
Deny()
已淘汰.
已淘汰.

防止呼叫堆疊中較高的呼叫端,使用程式碼呼叫此方法來存取目前執行個體所指定的資源。

(繼承來源 CodeAccessPermission)
Equals(Object)
已淘汰.

判斷指定的 FileIOPermission 物件是否等於目前的 FileIOPermission

Equals(Object)
已淘汰.

判斷指定的 CodeAccessPermission 物件是否等於目前的 CodeAccessPermission

(繼承來源 CodeAccessPermission)
FromXml(SecurityElement)
已淘汰.

透過 XML 編碼,重新建構具有指定狀態的權限。

GetHashCode()
已淘汰.

取得 FileIOPermission 物件的雜湊碼,其適合用於雜湊表這類的雜湊演算法和資料結構。

GetHashCode()
已淘汰.

取得 CodeAccessPermission 物件的雜湊碼,其適合用於雜湊表這類的雜湊演算法和資料結構。

(繼承來源 CodeAccessPermission)
GetPathList(FileIOPermissionAccess)
已淘汰.

取得具有指定之 FileIOPermissionAccess 的所有檔案和目錄。

GetType()
已淘汰.

取得目前執行個體的 Type

(繼承來源 Object)
Intersect(IPermission)
已淘汰.

建立並傳回目前權限與指定權限交集的權限。

IsSubsetOf(IPermission)
已淘汰.

判斷目前權限是否為指定權限的子集。

IsUnrestricted()
已淘汰.

傳回值,指出目前的權限是否不受限制。

MemberwiseClone()
已淘汰.

建立目前 Object 的淺層複製。

(繼承來源 Object)
PermitOnly()
已淘汰.

防止呼叫堆疊中較高的呼叫端,使用程式碼呼叫此方法來存取目前執行個體所指定之資源以外的所有資源。

(繼承來源 CodeAccessPermission)
SetPathList(FileIOPermissionAccess, String)
已淘汰.

設定指定檔案或目錄的指定存取權,取代使用權限的現有狀態。

SetPathList(FileIOPermissionAccess, String[])
已淘汰.

設定對指定檔案和目錄的指定存取,方法是以一組新的路徑取代指定存取的目前狀態。

ToString()
已淘汰.

建立並傳回目前權限物件的字串表示。

(繼承來源 CodeAccessPermission)
ToXml()
已淘汰.

建立權限和其目前狀態的 XML 編碼方式。

Union(IPermission)
已淘汰.

建立目前權限與指定權限聯集的權限。

適用於

另請參閱