mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-22 08:23:05 -05:00
tools: fsreg
tst: passthrough: support passing passthrough directory using -u
This commit is contained in:
parent
b5bf84b618
commit
e4f0406c4f
41
tools/fsreg.bat
Normal file
41
tools/fsreg.bat
Normal file
@ -0,0 +1,41 @@
|
||||
@echo off
|
||||
|
||||
setlocal
|
||||
setlocal EnableDelayedExpansion
|
||||
|
||||
set RegKey=HKLM\SYSTEM\CurrentControlSet\Services\WinFsp.Launcher\Services
|
||||
|
||||
if not X%1==X-u (
|
||||
set unreg=0
|
||||
|
||||
if not X%1==X set fsname=%1
|
||||
if not X%2==X set fsexec="%~f2"
|
||||
if not X%3==X set fscmdl=%3
|
||||
if not X%4==X set fssecu=%4
|
||||
|
||||
if X!fscmdl!==X goto usage
|
||||
if not exist !fsexec! goto notfound
|
||||
|
||||
reg add !RegKey!\!fsname! /v Executable /t REG_SZ /d !fsexec! /f
|
||||
reg add !RegKey!\!fsname! /v CommandLine /t REG_SZ /d !fscmdl! /f
|
||||
if not X!fssecu!==X reg add !RegKey!\!fsname! /v Security /t REG_SZ /d !fssecu! /f
|
||||
) else (
|
||||
set unreg=1
|
||||
|
||||
if not X%2==X set fsname=%2
|
||||
|
||||
if X!fsname!==X goto usage
|
||||
|
||||
reg delete !RegKey!\!fsname! /f
|
||||
)
|
||||
|
||||
exit /b 0
|
||||
|
||||
:notfound
|
||||
echo executable !fsexec! not found >&2
|
||||
exit /b 2
|
||||
|
||||
:usage
|
||||
echo usage: fsreg NAME EXECUTABLE COMMANDLINE [SECURITY] >&2
|
||||
echo usage: fsreg -u NAME >&2
|
||||
exit /b 2
|
@ -745,6 +745,7 @@ static NTSTATUS SvcStart(FSP_SERVICE *Service, ULONG argc, PWSTR *argv)
|
||||
PWSTR PassThrough = 0;
|
||||
PWSTR MountPoint = 0;
|
||||
HANDLE DebugLogHandle = INVALID_HANDLE_VALUE;
|
||||
WCHAR PassThroughBuf[MAX_PATH];
|
||||
PTFS *Ptfs = 0;
|
||||
NTSTATUS Result;
|
||||
|
||||
@ -779,6 +780,26 @@ static NTSTATUS SvcStart(FSP_SERVICE *Service, ULONG argc, PWSTR *argv)
|
||||
if (arge > argp)
|
||||
goto usage;
|
||||
|
||||
if (0 == PassThrough && 0 != VolumePrefix)
|
||||
{
|
||||
PWSTR P;
|
||||
|
||||
P = wcschr(VolumePrefix, L'\\');
|
||||
if (0 != P && L'\\' != P[1])
|
||||
{
|
||||
P = wcschr(P + 1, L'\\');
|
||||
if (0 != P && L'$' == P[2] &&
|
||||
(
|
||||
(L'A' <= P[1] && P[1] <= L'Z') ||
|
||||
(L'a' <= P[1] && P[1] <= L'z')
|
||||
))
|
||||
{
|
||||
StringCbPrintf(PassThroughBuf, sizeof PassThroughBuf, L"%c:%s", P[1], P + 3);
|
||||
PassThrough = PassThroughBuf;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (0 == PassThrough || 0 == MountPoint)
|
||||
goto usage;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user