mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-23 00:43:00 -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 PassThrough = 0;
|
||||||
PWSTR MountPoint = 0;
|
PWSTR MountPoint = 0;
|
||||||
HANDLE DebugLogHandle = INVALID_HANDLE_VALUE;
|
HANDLE DebugLogHandle = INVALID_HANDLE_VALUE;
|
||||||
|
WCHAR PassThroughBuf[MAX_PATH];
|
||||||
PTFS *Ptfs = 0;
|
PTFS *Ptfs = 0;
|
||||||
NTSTATUS Result;
|
NTSTATUS Result;
|
||||||
|
|
||||||
@ -779,6 +780,26 @@ static NTSTATUS SvcStart(FSP_SERVICE *Service, ULONG argc, PWSTR *argv)
|
|||||||
if (arge > argp)
|
if (arge > argp)
|
||||||
goto usage;
|
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)
|
if (0 == PassThrough || 0 == MountPoint)
|
||||||
goto usage;
|
goto usage;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user