如果我有在程序目录创建新文件的权限,我想要在那里创建该文件,如果没有,我想要在程序的AppData文件夹中创建该文件。
FileIOPermission f = new FileIOPermission(PermissionState.None);
f.AllLocalFiles = FileIOPermissionAccess.Read;
try
{
f.Demand();
}
catch (SecurityException s)
{
Console.WriteLine(s.Message);
}
编辑:对你的问题更明确的回答可能是这样的:
private string GetWritableDirectory()
{
string currentDir = Environment.CurrentDirectory; // Get the current dir
FileIOPermission f = new FileIOPermission(FileIOPermissionAccess.Write, currentDir);
try
{
f.Demand(); // Check for write access
}
catch (SecurityException s)
{
return Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) ; // Return the appdata (you may want to pick a differenct folder here)
}
return currentDir; // Have write access to current dir
}
尝试创建文件夹并捕获随后的异常:其他任何操作都不安全,因为Windows是(或多或少)实时系统,在您测试权限和创建文件夹之间,权限可能已更改。考虑以下潜在的关键事件链: