c# - 如何确定相对路径是否指向给定路径之外

标签 c# winforms

我有以下场景(C#、WinForms)。我有某种项目文件保存在某个目录中。项目文件包含对另一个文件的引用。该引用相对于保存项目文件的位置。

示例:项目文件保存在c:\projects\project.xyz下。另一个文件被引用为“\someotherdir\file.abc”。

这工作正常,但可能有人试图将相对路径操纵为“..\Windows\System32\file.abc”之类的东西。所以需要检查相对路径是否指向项目保存路径之外(这是一个定义要求,所有引用的文件都在项目路径内)。

如何检测这种情况?

最佳答案

您可以尝试使用以下扩展方法:

public static bool IsChildOf(this string path, string parentPath)
{
    return Path.GetFullPath(path).StartsWith(Path.GetFullPath(parentPath),
           StringComparison.InvariantCultureIgnoreCase);
}

关于c# - 如何确定相对路径是否指向给定路径之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3131704/

相关文章:

c# - 类型转换会创建新对象吗?

winforms - 通过WebBrowser控件下载文件

c# - 如何创建人物编辑器?

c# - 在 Visual Studio 上打开自定义工具窗口,而不从“ View ”菜单调用它

c# - 实现 INotifyPropertyChanged - 是否存在更好的方法?

c# - 在 CaSTLe Windsor 中注册通用类型

c# - 如何使用 Winforms 或 WPF 构建表单完成/文档合并应用程序?

c# - 为什么自定义 WinForms 控件在绘制时不遵守构造函数中设置的属性?

c# - 需要硬编码密码

c# - 使用用户名和密码启动进程