问题标签 [reparsepoint]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1334 浏览

winapi - 获取 Microsoft OneDrive 管理的文件的完整文件属性

Microsoft OneDrive 允许文件存储在本地、远程或两种方式。这是由 Windows 10 中出现的新文件属性决定的:

以及从以前版本的 Windows 继承的一些文件属性:

问题是我找不到通过 Win32 API 或 NT Native API 检索这些新文件属性的方法。到目前为止我已经尝试过:

对于设置为始终远程存储的 OneDrive 文件,所有这些方法都返回 0x00500020,而真正的属性为 0x00501620(REPARSE_POINT、SPARSE_FILE 和 OFFLINE 被屏蔽)。可以使用以下 PowerShell 命令检索真正的文件属性:

attrib.exesystem 命令还能够显示其中一些与 OneDrive 相关的新文件属性(O用于脱机、U用于未固定、P用于固定)。

有没有办法在我的软件中检索这些文件属性?也许我需要在清单中添加一些东西?

0 投票
1 回答
280 浏览

windows-10-universal - 什么是 WCI 重解析点(标记 0x80000018)?

重新分析点标记0x80000018设置了“Microsoft”位,但未在 MSDN 上记录。此标记是 Windows 10 的新标记,在 SDK 中定义为IO_REPARSE_TAG_WCI. 这方面的信息非常少,我能找到的最多的是它可能代表“Windows Container Image”,而没有解释标签的功能。

大量的重解析点标签是神秘的,但这个标签的特殊之处在于它被一些通用应用程序使用:安装时%USERPROFILE%\AppData\Local\Packages\<app>\包含一个作为重解析点的LocalCache目录。IO_REPARSE_TAG_WCI里面是用户配置文件目录结构的大部分空镜像,完全由这些 WCI 重解析点组成。

这些重解析点背后的目的是什么?为什么一些通用应用程序使用它们而其他应用程序不使用它们?

0 投票
1 回答
1230 浏览

c# - 无法获取 OneDrive 文件夹的重新分析点信息

我正在使用下面的代码在我的应用程序中检索重解析点信息。这适用于符号链接和交汇点,但对于 OneDrive 文件夹及其所有子项而言,“不是重新分析点”失败。

本机声明:

以下命令可以成功检索 OneDrive 文件夹的重解析点信息。

fsutil 重解析点查询 C:\Users\UserName\OneDrive

确定如何使此代码正常工作会很棒。非常令人沮丧的是,确认为具有重新分析点的文件夹会收到一条错误消息,但它们不是。

我也在 C++ 中尝试过这个,但得到了同样的错误。

0 投票
0 回答
53 浏览

winapi - 获取任何给定 UNC 文件夹路径(包括 NAS)和任何每用户重定向的 FinalPath

我需要弄清楚给定(UNC)路径是否实际上指向/结束/是给定路径(目录)。

示例:“\?\UNC\machine1\shared1”。 GetFinalPathNameByHandle将导致“\?\UNC\machine1\shared1”。

但是,如果 shared1 中有符号链接“sym”并且给定路径是“\?\UNC\machine1\shared1\sym”,则创建“sym” mklink并指向“\machine2\shared2”,结果为GetFinalPathNameByHandle 是“\?\UNC\machine2\shared2”。

现在,我们有一个启用了“home”文件夹的 QNAP NAS - 这意味着每个域用户在导航到“\nas\home”时,最终都会进入自己的目录。GetFinalPathNameByHandle for "\?\UNC\nas\home" 结果为 "\?\UNC\nas\home",而我需要掌握实际的目录名称,例如 "\?\UNC\nas\homes\用户名”。我不需要读/写——我只需要知道“\?\UNC\nas\home”真的不是“\?\UNC\nas\home”。

当“\machine\folder”最终出现在其他地方(每个用户)时,这个想法就会传播到任何类似的场景。假设我什至不需要知道它真正结束的地方,只是发生了某种重新分析......

有任何想法吗?

0 投票
2 回答
408 浏览

java - 如果 jar 文件具有 L 属性/重解析点,为什么 Java 应用程序无法在 Windows 上运行

我真的希望以下内容能在我们没有想法的时候给某人敲响警钟。关于如何进一步诊断的答案或建议将不胜感激。

我们有一个 Java 应用程序已经运行了 18 个月,没有任何问题。它现在正在迁移到将 Windows Server 2019 Standard 作为 VM 运行的新平台。在第一次安装时,一切运行正常,但应用程序会定期无法启动,然后只能通过重新复制所有 jar 文件来修复。这是暂时的,因为最终它会再次失败。

经过大量监控后,我们注意到有一个 Windows 进程会定期为所有文件设置“L”文件属性并创建重解析数据。这应该不是问题,但是一旦发生这种情况,JVM 就无法启动应用程序。(任何 Windows 专家都知道这是做什么的?)

一个关键点是应用程序是通过指定 JPMS 参数来启动的,例如:

这运行良好,在 jar 文件上设置了“L”属性,然后失败并显示消息:

将 MyApp.jar 重命名为其他名称,然后将其复制回 MyApp.jar 可以解决问题,因为它会创建一个没有 L 属性和重新解析数据的文件(直到进程重新应用它)

此行为不仅适用于这一操作,还适用于使用模块系统的任何地方,例如:

有趣的是(!)如果我们尝试一个更简单的非模块化应用程序并运行为:

那么即使设置了 L 属性,应用程序也能正常运行。

显然我们并不完全理解,但它看起来好像通过模块系统运行以某种方式意味着无法读取具有 L 属性/重新解析数据的文件(?)

我们已经尝试了不同版本的 OpenJDK 热点和 OpenJ9 JVM,但结果相同。有任何想法吗?

0 投票
1 回答
77 浏览

winapi - 如何使用 GetFileInformationByHandleEx 读取连接点目录中的文件?

path如果指向常规目录,我有这段代码运行良好:

但是如果目录指向一个连接点,它返回(ERROR_INVALID_PARAMETER无效参数)

所以,我试过这个CreateFile

现在,我没有错误,但它只显示"."".."条目,而不是我可以使用 cmd.exe 读取的目录中的所有文件

0 投票
1 回答
41 浏览

symlink - 类似于连接点、目录符号链接、挂载点

我编写了一个程序来检测一个目录是否是一个 ReparsePoint,它可以精确地检测连接点、目录符号链接和挂载驱动器。我看到了一个看起来和工作方式与连接点相似的目录(我没有创建它,由其他人创建),但我的代码并没有单独检测到那个特定的东西!还有其他类似于这些 ReparsePoints 的东西吗?如果是,如何通过 CPP 检测它们?

编辑:我将插入代码,以便每个人都能更好地理解,