C#和File.WriteAllText错误

seb*_*ibu 3 c# file-permissions

我正在构建一个简单的C#应用​​程序,它必须在文件中写入用户输入.

我的第一个问题是我希望用户能够设置设置文件的路径,但我希望程序能够在以下启动时读取设置文件.

我的第二个问题是,如果我使用类似的东西:

    File.WriteAllText(@"C:\Users\Public\settings.settings", message);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

    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
Run Code Online (Sandbox Code Playgroud)

有任何想法吗 ?

Ste*_*ner 5

令人惊讶的是,但并非所有用户都可以访问"C:\Users\Public".

尝试将文件放入 Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\settings.settings";

所有用户都应该有权在那里写.

还可以考虑使用特定于应用程序的子文件夹.