簡體   English   中英

C#和File.WriteAllText錯誤

[英]C# and File.WriteAllText error

我正在構建一個簡單的C#應用​​程序,它必須在文件中寫入用戶輸入。

我的第一個問題是我希望用戶能夠設置設置文件的路徑,但我希望程序能夠在以下啟動時讀取設置文件。

我的第二個問題是,如果我使用類似的東西:

    File.WriteAllText(@"C:\Users\Public\settings.settings", message);

我收到以下錯誤:

    System.Security.SecurityException: Request for the permission of type 
    'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, 
    Culture=neutral, PublicKeyToken=b77a5c561934e089' failed. at 
    System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& 
    stackMark, Boolean isPermSet)   at System.Security.CodeAccessPermission.Demand()
       at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, 
    Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions 
    options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
    at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, 
    FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)

    at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, 
    FileShare share, Int32 bufferSize, FileOptions options)

     at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize)
    at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding)
    at System.IO.File.WriteAllText(String path, String contents, Encoding encoding)
    at IMDBGrabber.frmSettings.writeToFile(String p)
    The action that failed was: Demand

    The type of the first permission that failed was: System.Security.Permissions.FileIOPermission

    The Zone of the assembly that failed was: MyComputer

有任何想法嗎 ?

令人驚訝的是,但並非所有用戶都可以訪問"C:\\Users\\Public"

嘗試將您的文件放在Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\\\settings.settings";

所有用戶都應該有權在那里寫。

還可以考慮使用特定於應用程序的子文件夾。

右鍵單擊project => properties並選中Security選項卡。 取消選中“啟用ClickOnce安全設置”,然后重試。 如果問題仍然存在,請取消選中“簽名”選項卡中的唯一選項。

我必須以管理員身份運行我的應用程序才能寫入c:中受保護的文件夾。 例如,如果在visual studio中調試應用程序,請確保右鍵單擊“C:\\ Program Files(x86)\\ Microsoft Visual Studio 12.0 \\ Common7 \\ IDE \\ devenv.exe”並選擇“以管理員身份運行”。 然后從那里打開你的解決方案。 我的應用程序試圖寫入c:\\的根目錄

您的C:\\ Users \\ Public文件夾是否可寫? 如果不是,請確保它是,因為異常跟蹤告訴您存在SecurityException(與您可能已經猜到的安全問題相關),並且先前的異常與文件IO相關。 所以它最有可能是你的應用程序。 不(或運行它的用戶)沒有該文件夾的寫權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM