我正在制作一个自定义的 SaveFileDialog。
这是一个目录:
C:\Windows\System32\0409
Run Code Online (Sandbox Code Playgroud)
它可读但不可写。
我通常使用这种方式来了解它是否可读:
foreach (string i in Directory.GetDirectories(@"C:\Windows\System32\", "*", new EnumerationOptions { IgnoreInaccessible = true }))
{
////
}
Run Code Online (Sandbox Code Playgroud)
但是,这种方式无法获取是否可写。
当程序将文件写入不可写目录时,会抛出以下错误:
System.UnauthorizedAccessException
HResult=0x80070005
Message=Access to the path 'C:\Windows\System32\0409\' is denied.
Source=System.IO.FileSystem
StackTrace:
at System.IO.FileSystem.CreateDirectory(String fullPath, Byte[] securityDescriptor)
at System.IO.Directory.CreateDirectory(String path)
at CoolDuck.Dialogs.Extract.<Window_Loaded>b__26_0() in G:\SampleProject\Test.xaml.cs:line 128
at System.Threading.Tasks.Task.InnerInvoke()
at System.Threading.Tasks.Task.<>c.<.cctor>b__277_0(Object obj)
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
Run Code Online (Sandbox Code Playgroud)
我不想用 atry&catch来解决这个问题。我不认为这是正确的方法。
我该如何解决这个问题?谢谢你。