1- # usvfs
1+ # USVFS
22
3- [ ![ License] ( http ://img.shields.io/:license-gpl-blue.svg)] ( http://www.gnu.org/licenses/gpl-3.0.en.html )
4- [ ![ Build status ] ( https://github.com/github/docs /actions/workflows/build.yml/badge.svg )] ( https://github.com/ModOrganizer2/usvfs/actions )
3+ [ ![ License] ( https ://img.shields.io/:license-gpl-blue.svg)] ( http://www.gnu.org/licenses/gpl-3.0.en.html )
4+ [ ![ Build] ( https://github.com/ModOrganizer2/usvfs /actions/workflows/build.yml/badge.svg )] ( https://github.com/ModOrganizer2/usvfs/actions )
55
6- USVFS (short for User Space Virtual File System) aims to allow windows applications to create file or directory links that
7- are visible to only a select set of processes.
8- It does so by using api hooking to fool file access functions into discovering/opening files that are in fact somewhere else
6+ USVFS (short for User Space Virtual File System) aims to allow windows applications to
7+ create file or directory links that are visible to only a select set of processes.
8+ It does so by using api hooking to fool file access functions into discovering/opening
9+ files that are in fact somewhere else.
10+
11+ ## Current state
12+
13+ USVFS is work in progress and should be considered in alpha state.
14+ It is a core component of Mod Organizer v2 < https://github.com/ModOrganizer2/modorganizer >
15+ and thus receives serious real world testing.
16+
17+ ## Building
18+
19+ You will need ` cmake ` , Python 3+ and ` vcpkg ` to build USVFS:
20+
21+ ``` pwsh
22+ cmake --preset vs2022-windows-x64
23+ cmake --build --preset vs2022-windows-x64 --config Release
24+
25+ # only if you need to hook x86 applications
26+ cmake --preset vs2022-windows-x86
27+ cmake --build --preset vs2022-windows-x86 --config Release
28+ ```
929
1030## Comparison to symbolic links
1131
12- The following is based on the final goal for usvfs and doesn't necessary reflect the current development state.
32+ The following is based on the final goal for USVFS and doesn't necessary reflect the
33+ current development state.
1334
1435Unlike symbolic file links provided by NTFS
36+
1537- links aren't visible to all applications but only to those the caller chooses
1638- links disappear when the "session ends"
1739- doesn't require write access to the link destination
@@ -21,32 +43,15 @@ Unlike symbolic file links provided by NTFS
2143- can also "virtually" unlink files, thus make them invisible to processes or replace existing files
2244
2345There are of course drawbacks
46+
2447- will always impose a memory and cpu overhead though hopefully those will be marginal
2548- becomes active only during the initialization phase of each process so it may not be active at the time dependent dlls are loaded
2649- introduces a new source of bugs that can cause hard to diagnose problems in affected processes
2750- may rub antivirus software the wrong way as the used techniques are similar to what some malware does.
2851
29- ## Current state
30-
31- usvfs is work in progress and should be considered in alpha state.
32- It is a core component of Mod Organizer v2 < https://github.com/ModOrganizer2/modorganizer >
33- and thus receives serious real world testing
34-
35- ## Building
36-
37- You will ` cmake ` , Python 3+ and ` vcpkg ` to build USVFS:
38-
39- ``` pwsh
40- cmake -B build32 -A Win32 "-DCMAKE_TOOLCHAIN_FILE=path\to\vcpkg\scripts\buildsystems\vcpkg.cmake" -DBUILD_USVFS_TESTS=TRUE
41- cmake --build build32 --config Release
42-
43- cmake -B build64 -A Win64 "-DCMAKE_TOOLCHAIN_FILE=path\to\vcpkg\scripts\buildsystems\vcpkg.cmake" -DBUILD_USVFS_TESTS=TRUE
44- cmake --build build64 --config Release
45- ```
46-
4752## License
4853
49- usvfs is currently licensed under the GPLv3 but this may change in the future.
54+ USVFS is currently licensed under the GPLv3 but this may change in the future.
5055
5156## Contributing
5257
0 commit comments