我编写了一个程序,用户可以在其中选择本地和远程目录。在对选定路径执行任何操作之前,我想检查它是否有效以及用户是否具有对其授予的读/写权限。这就是我所拥有的:
private bool checkInput(string dirPath, string depthStr, string filename)
{
...
string reason = null;
try
{
...
else if ((reason = CAN_ACCESS(dirPath)) == null)
{
if (!(new DirectoryInfo(dirPath)).Exists)
reason = string.Format("The directory '{0}' is no directory or does not exist!", dirPath);
...
}
}
catch (Exception ex)
{
reason = ex.Message;
}
if (reason != null)
{
MessageBox.Show(reason, "Wrong input", MessageBoxButton.OK, MessageBoxImage.Error);
return false;
}
return true;
}
public static string CAN_ACCESS(string dirPath)
{
Uri uri = new Uri(dirPath);
//UserFileAccessRights rights = new UserFileAccessRights(dirPath);
string errorMsg = null;
if (uri.IsUnc && !haveAccessPermissionOnHost(uri))
{
string domain = new Uri(dirPath).Host;
domain = dirPath;
ErrorClass res = PinvokeWindowsNetworking.connectToRemote(domain, null, null, true);
if (res == null)
return null;
else
errorMsg = string.Format("(Code {0}): {1}", res.num, res.message);
}
return errorMsg;
}
private static bool haveAccessPermissionOnHost(Uri uri)
{
throw new NotImplementedException();
}
主要问题haveAccessPermissionOnHost(Uri uri),
是,如果用户在远程主机上具有读/写权限并授予 unc 路径,如何简单地签入。
提示: 如果未授予权限,则会弹出众所周知的 Windows 登录窗口以强制用户输入一些凭据,这可以正常工作:
ErrorClass res = PinvokeWindowsNetworking.connectToRemote(domain, null, null, true);
我从这个问题中得到了它(并更改了提供的代码以在成功时返回ErrorClass
, null )。
我的第二个问题是,如果我的结构通常是检查路径的方式,无论是本地的还是远程的,是否有效(这就是我根据需要提供更多代码的原因)。