0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WinFsp で仮想ファイルシステムを作る (3)

Last updated at Posted at 2025-10-29

net use を使って passthrough を実行する

前の記事 では Visual Studio のデバッガから passthrough.exe を起動してマウントを行っていたが、WinFsp の管理するレジストリに exe を登録することで、net use コマンドによりマウントできるようになる。

このレジストリ・キーは 32bit 版の以下となる。
HKLM\Software\WinFsp\Services

レジストリ・エディタで確認する場合のは下のキーになる。
HKLM\Software\WOW6432Node\WinFsp\Services

WinFsp をインストールした時点では memfs32, memfs64, memfs-a64, memfs-dotnet が登録されている。

image.png

ここに passthrough を登録できると net use によるマウントができる。

レジストリの登録

レジストリに exe を登録するためには WinFsp により提供される fsreg.bat を利用する。

passthrough を登録するためには Windows Terminal を管理者権限で開き、次のコマンドを実行する。

"%ProgramFiles(x86)%"\WinFsp\bin\fsreg.bat passthrough "C:\cxx\project\03-winfsp-passthrough\x64\Debug\03-winfsp-passthrough.exe" "-u %1 -m %2 -d -1 -D C:\cxx\project\03-winfsp-passthrough\log.txt" "D:P(A;;RPWPLC;;;WD)"

長いので分解してみると以下のようになる。

  • "%ProgramFiles(x86)%"\WinFsp\bin\fsreg.bat
    fsreg.bat のフルパス
  • passthrough
    レジストリの登録キー名
  • "C:\cxx\project\03-winfsp-passthrough\x64\Debug\03-winfsp-passthrough.exe"
    exe のフルパス
  • "-u %1 -m %2 -d -1 -D C:\cxx\project\03-winfsp-passthrough\log.txt"
    exe 実行時の引数
  • "D:P(A;;RPWPLC;;;WD)"
    NTFS の ACL

ACL については memfs と同じ値を採用している。
Copilot によると、Everyone フルアクセスらしい。

コマンドを実行するとレジストリ・エディタで確認できる。

image.png

コマンドで確認すると以下のように表示される。

C:\cxx\project\03-winfsp-passthrough>reg query HKLM\Software\WinFsp\Services\passthrough /s /reg:32

HKEY_LOCAL_MACHINE\Software\WinFsp\Services\passthrough
    Executable    REG_SZ    C:\cxx\project\03-winfsp-passthrough\x64\Debug\03-winfsp-passthrough.exe
    CommandLine    REG_SZ    -u %1 -m %2 -d -1 -D C:\cxx\project\03-winfsp-passthrough\log.txt
    JobControl    REG_DWORD    0x1
    Security    REG_SZ    D:P(A;;RPWPLC;;;WD)

ディレクトリのマウント

レジストリへの登録が正常に行われると net use コマンドでディレクトリがネットワーク・ドライブとしてマウントできる。

C:\cxx\project\03-winfsp-passthrough>net use Y: "\\passthrough\C$\cxx\project\03-winfsp-passthrough" /PERSISTENT:NO
コマンドは正常に終了しました。

正常にマウントできると、デバッガで行っていたように Y: として参照できるようになる。

C:\cxx\project\03-winfsp-passthrough>dir y:
 ドライブ Y のボリューム ラベルがありません。
 ボリューム シリアル番号は 0000-0000 です

 Y:\ のディレクトリ

2025/10/29  11:51    <DIR>          .
2025/10/29  11:51    <DIR>          ..
2025/10/28  14:48    <DIR>          03-winfs.59ee3fec
2025/10/28  14:45                41 03-winfsp-passthrough.cpp
2025/10/28  14:43             1,468 03-winfsp-passthrough.sln
2025/10/28  14:48             7,134 03-winfsp-passthrough.vcxproj
2025/10/28  14:48             1,144 03-winfsp-passthrough.vcxproj.filters
2025/10/28  15:19               771 03-winfsp-passthrough.vcxproj.user
2025/10/29  11:50            10,196 log.txt
2023/02/07  21:16            30,128 passthrough.c
2025/10/28  14:48    <DIR>          x64
               7 個のファイル              50,882 バイト
               4 個のディレクトリ  610,836,840,448 バイトの空き領域

後片付け

上記でマウントした Y: のアンマウントとレジストリの登録は、以下のように解除および削除する。

アンマウント

C:\cxx\project\03-winfsp-passthrough>net use Y: /DELETE
Y: が削除されました。

レジストリ・キーの削除 (管理者権限で実行)

C:\cxx\project\03-winfsp-passthrough>"%ProgramFiles(x86)%"\WinFsp\bin\fsreg.bat -u passthrough
この操作を正しく終了しました。

確認

C:\cxx\project\03-winfsp-passthrough>y:
指定されたドライブが見つかりません。

C:\cxx\project\03-winfsp-passthrough>reg query HKLM\Software\WinFsp\Services\passthrough /s /reg:32
エラー: 指定されたレジストリ キーまたは値が見つかりませんでした
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?