問題タブ [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 投票する
4 に答える
5679 参照

c# - .net (c#)で再解析ポイントを確認する最良の方法は何ですか?

私の機能はほとんど標準的な検索機能です...以下に含めました。

関数には、Repart NTFS ポイントの除去を担当する 1 行のコードがあります。

問題は、エラーが発生することです Access to the path 'c:\System Volume Information' is denied.

コードをデバッグしましたが、このディレクトリの実行時の属性は次のとおりです。

Windows 2008 サーバー マシンでこのコードを実行していますが、この失敗を解決するためにできることはありますか?

0 投票する
1 に答える
5192 参照

c# - 標準ユーザーでジャンクションまたはシンボリックリンクのターゲットを取得する方法

プログラムでジャンクションのターゲットを取得しようとしていますが、管理した唯一の方法は次のとおりです。

  1. バックアップ権限のリクエスト
  2. ファイル/ディレクトリへのハンドルを取得するために、特別なパラメーターを指定して CreateFile を p-invoke します。
  3. ターゲットを取得するための DeviceIoControl 呼び出し。

最初のステップは通常のユーザー アカウントでは機能しません。バックアップ権限がないためです。これを行うたびに UAC ユーザーの同意ウィンドウを取得したくありません。

通常の「dir /A:L」コマンドでリンクのターゲットが解決されるため、これはなんとか実行できると思います。

0 投票する
3 に答える
12744 参照

c# - シンボリック リンク、ジャンクション ポイント、マウント ポイント、ハード リンクの検出

ファイルまたはディレクトリがシンボリック リンクジャンクション ポイントマウント ポイントハード リンクのいずれであるかを確認する方法を知っている人はいますか?

私の知る限り、ファイルの「ReparsePoint」属性をチェックすることでシンボリックリンクが検出されます。ジャンクション ポイントは、"ReparsePoint" 属性のディレクトリをチェックすることによって検出されます。したがって、「ReparsePoint」属性がファイルに設定されている場合、それはシンボリック リンクである必要があります。それ以外の場合、ディレクトリに設定されている場合、それはジャンクション ポイントになるだけです...そうですか?

ここまでは順調ですが、「マウント ポイント」と「ハード リンク」を検出する方法はまだわかりません。誰でもこれを行う方法を教えてもらえますか?

0 投票する
1 に答える
2886 参照

winapi - NTFSジャンクション、APIの理解に問題があります

更新:この質問は、バックアップアプリケーションやその他のプログラムでWin32 APIを使用する方法についての質問に発展しました。この質問では、実際にディスク上にあるファイルを知る必要がありますか?ジャンクションと再解析ポイントは、私が考慮する必要のある重要な概念であり、NTFSファイルシステムで最も混乱するものです。NTFS filesystem filter driver

元の質問は次のとおりです。


  1. ディレクトリがジャンクションであるかどうかを検出するために使用されるWin32APIは何ですか?
  2. NTFS階層の「どこに」(理解が不足しているため)、ジャンクションは格納されていますか?
  3. ジャンクションを作成すると、c:\thejunction_mydir 両方ディレクトリが相互のジャンクションになりますか?つまり、作成され参照されます
0 投票する
1 に答える
332 参照

windows-xp - リパースポイントの削除

junction.exe ユーティリティーを使用して再解析ポイントを作成しました。「-d」スイッチを使用して削除しようとすると、エラーが返され、アクセスが拒否されたと主張します。ジャンクション フォルダーのプロパティを確認すると、[読み取り専用] にグレー表示されたチェック マークがあり、その属性を逆にしようとした後も戻り続けます。助けてください!!

0 投票する
1 に答える
1282 参照

.net - .NET を使用して Windows で実際のディレクトリ パスを取得するにはどうすればよいですか?

私の必要性は単純です。Windows ディレクトリ パスを指定すると、実際のパスだけが必要になります。用語が間違っていると確信しているので、例を挙げています。

C:\Documents and Settings\All Usersを指定すると、メソッドは次のように表示されます。

  • Windows 7では C:\ProgramData
  • Windows 2003の C:\Documents and Settings\All Users

これは、Windows 7 ではC:\Documents and SettingsがC:\Usersを参照するジャンクションであり、C:\Users\All Usersが実際のディレクトリであるC:\ProgramDataを参照するさらに別のジャンクションであるためです。

それで、私の質問は、どの .NET API でこれらすべてを実行できるかということです。

ありがとう。

0 投票する
1 に答える
7312 参照

directory - NTFSジャンクションとシンボリックリンク(ディレクトリ用)

高レベルの観点から(実装ではなく、結果とインターフェイスのみを気にすることを意味します)、ディレクトリを指すNTFS再解析ポイントとを指すシンボリックリンクの動作の違いは何ですか?同じディレクトリ?

それらはスタック内の同じレベルで解決されますか、それとも一方が解決できる特定の時間にもう一方が解決できない可能性がありますか(たとえば、起動時)?

(シンボリックリンクがファイルに対しても機能することは承知していますが、ここでディレクトリの違いについて質問しています。)

0 投票する
2 に答える
762 参照

winapi - REPARSE_DATA_BUFFER 構造体の PathBuffer の "SubstituteName" 文字列は常に "\??\" というプレフィックスで始まりますか? もしそうなら、それはなぜですか?

Windows XP 以降と互換性のある Windows API 関数を使用して、ジャンクションまたはシンボリック リンクのターゲットを見つけようとしています。私はCreateFile、再解析ポイントへのハンドルを取得するために使用してからDeviceIoControlFSCTL_GET_REPARSE_POINTフラグを使用して再解析データをREPARSE_DATA_BUFFER. 次に、バッファー内のオフセットと長さを使用して、文字列SubstituteNamePrintName文字列を抽出します。

Windows 8 ではPrintName、正常なパス (つまりc:\filename.ext) が得られますが、XP では のPrintNameセクションのREPARSE_DATA_BUFFER長さが常に 0 のようで、空の文字列が残ります。

を使用するSubsituteNameと両方で機能するように見えますが、常に\??\ファイルパスの先頭に接頭辞 (つまり\??\c:\filename.ext) が付きます。(補足として、接頭辞もfsutil reparsepoint query示しています)。\??\

MSDN のドキュメントの多くを読みましたが、このプレフィックスの説明が見つかりません。接頭辞がSubstituteName必ず必ず . Microsoft のすべての再解析ポイントに"\??\"プレフィックスが表示されるかどうかと、その理由を知りたいです。SubstituteName

0 投票する
0 に答える
294 参照

c# - ディレクトリがネットワーク ドライブ上に存在するかどうかを確認するにはどうすればよいですか?

ネットワーク ドライブ上のディレクトリをループしていますが、一部のディレクトリは正しくReparsePointsなく、実際には存在しません。

を使用すると約 30 秒後にDirectory.Exists戻りますが、Windows エクスプローラーでフォルダーを開こうとすると、次のエラー メッセージが返されます。truenew DirectoryInfo(dir).Exists

I:\MyFolder にアクセスできません。

ネットワークパスが見つかりませんでした。

を使用してディレクトリの内容にアクセスしようとするとdir.GetDirectories()、パスが存在しないため例外がスローされ、dir.GetAccessControl().

ReparsePointフォルダに有効なパスがある場合に、ネットワーク パスが存在するかどうかを判断する方法はありますか?

唯一のフォルダ属性はDirectory, ReparsePoint