mirror of https://github.com/raandree/NTFSSecurity
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
7.1 KiB
7.1 KiB
| status | last-verified | owner | source |
|---|---|---|---|
| current | 2026-10-04 | active-agent | repository evidence |
Tech context
Stack
- C# class libraries, old-style
.csproj, .NET Framework 4.5.2, solutionNTFSSecurity.sln(Visual Studio 2017 format). - Projects:
NTFSSecurity(cmdlets),Security2(ACL object model, Win32 interop),PrivilegeControlandProcessPrivileges(token privileges),Log,TestClient,NTFSSecurityTest(MSTest, minimal coverage). - NuGet (
packages.config): AlphaFS 2.2.x for long paths;System.Management.Automation.dll10.0.10586.0. - Module:
NTFSSecurity.psd1loadsNTFSSecurity.psm1(aliasesdir2,gi2,rm2,del2),NTFSSecurity.Init.ps1(Add-Type of the helper assemblies, prependsNTFSSecurity.format.ps1xml), andNTFSSecurity.dll. - Documentation: Markdown in
DocsandREADME.md, rendered by GitHub; no documentation site and no wiki (Decision 9). Cmdlet pages are platyPS 0.14 markdown (schema 2.0.0) inDocs/Cmdlets. - Help:
NTFSSecurity\en-US\NTFSSecurity.dll-Help.xml, generated fromDocs/Cmdletsand committed (Decision 8). - Tests: Pester 5 tests in
Tests(Help.Tests.ps1) against the Release build.
Environment
- Windows only (NTFS, Win32 security APIs).
- The Debug build writes straight into
C:\Program Files\WindowsPowerShell\Modules\NTFSSecurity\. - No Visual Studio MSBuild or .NET Framework targeting pack on the
workstation. A local build works with the .NET Framework MSBuild
(
%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe) plus/p:CscToolPathto the Roslyncsc.exeof theMicrosoft.Net.Compilerspackage; the legacy C# 5 compiler fails with CS0136.dotnet msbuildfails on the binary resources inResources.resx(MSB3822, MSB3823). - platyPS 0.14.2, Pester 5.7.1, PSScriptAnalyzer, and powershell-yaml are
installed only for PowerShell 7. Windows PowerShell 5.1, started from
PowerShell 7, imports platyPS and Pester by full path
(
~\OneDrive\Documents\PowerShell\Modules\platyPS\0.14.2,C:\Program Files\PowerShell\Modules\Pester\5.7.1). Leave$env:PSModulePathalone: PowerShell 7 hands the child the Windows PowerShell default path, and clearing it leaves Windows PowerShell without its core modules (Pester fails:Add-Membernot found). - MarkdownLinkCheck is not installed, and
Save-Modulecrashed (FailFast) in PowerShell 7.6 on 2026-10-04. Download the 0.2.0 package fromhttps://www.powershellgallery.com/api/v2/package/MarkdownLinkCheck/0.2.0into$env:TEMP, extract it, and import it by path. - The workstation is ARM64; PowerShell 7 runs as x64 under emulation. Python 3.12.10 (ARM64) is installed per user with winget, the maintainer's choice for an MkDocs check that Decision 9 made unnecessary.
- The NuGet cache (
~\.nuget\packages) holds every build dependency: copyalphafs\2.2.1,system.management.automation.dll\10.0.10586, andmicrosoft.netframework.referenceassemblies.net452\1.0.3intopackages\<Id>.<Version>, and pointCscToolPathatmicrosoft.net.compilers\4.2.0\tools.
Constraints
ModuleVersionin the source manifest is4.2.5; the latest tag and Gallery release is4.2.6.- Besides the shipped help file and its tests (#93), the module source at
masterdiffers from tag4.2.6only by theRemove-Item2 -PassThurto-PassThrurename andCompatiblePSEditionsin the manifest. CmdletsToExportlistsShow-NTFSSimpleAccess, which no longer exists (WinForms code removed ind3063de), and repeats the inheritance cmdlets.Test-ModuleManifestfails in Windows PowerShell 5.1:CompatiblePSEditionsrequiresPowerShellVersion5.1 or higher, and the manifest says2.0(work package 4).- Releases have no script and no CI deployment. Evidence from 4.2.6: the
Gallery DLLs are Debug builds (
DebuggableAttribute263), the nuspec comes fromPublish-Module, the package holds the whole output folder (.pdb,AlphaFS.xml, 7 MBSystem.Management.Automation.dll), and the published manifest differs from the tag only byModuleVersion(tags carry the previous version). GitHub releases attachNTFSSecurity.zip. - CI: AppVeyor project
raandree/ntfssecuritybuilds branches and pull requests. The Read the Docs projectntfssecurity(maintainerSup3rlativ3) and a second AppVeyor project are attached to the forkSup3rlativ3/NTFSSecurity, which no longer exists (GitHub 404, 2026-10-04). That site still serves pages from 2020 and isn't used (Decision 9). Get-FileHash2fails in PowerShell 7; all other cmdlets passed a smoke test in PowerShell 7.6.CHANGELOG.mdlists user-visible changes only; CI and build-only changes get no entry (Decision 7).- Remote mutations are the maintainer's: the user-level preToolUse hook
Block-RemoteMutation.ps1deniesgit pushand mutatingghcommands (pr create,pr close, and others) from the agent session, even after an explicit request. Its override,COPILOT_ATELIER_ALLOW_REMOTE=1, is read from the environment that VS Code starts the hook with; setting it inside an agent command has no effect (verified 2026-10-04). The hook matches the whole command text, so a commit message that quotes such a command is blocked too. Prepare the commands and descriptions; the maintainer runs them.
Validation
- CI (
appveyor.yml, image Visual Studio 2022): restorepackages.configper project plusMicrosoft.NETFramework.ReferenceAssemblies.net4521.0.3, buildNTFSSecurity.csprojin Release withTargetFrameworkRootPath/FrameworkPathOverride, importNTFSSecurity\bin\Release\NTFSSecurity.psd1, then: 01 runUpdate-MarkdownHelpand fail ongit diff -- Docs/Cmdlets; 02Get-MarkdownLink -BrokenOnly; 03 regenerate the help file and fail ongit status --porcelain -- NTFSSecurity/en-US; 04 Pester 5.7.1 onTests, each result reported once through the build worker API (POST $env:APPVEYOR_API_URL/api/tests/batch). - AppVeyor REST API (public, no token): build
api/projects/raandree/ntfssecurity/builds/<buildId>, job logapi/buildjobs/<jobId>/log(bytes; decode as UTF-8), and test listapi/buildjobs/<jobId>/tests. - Run platyPS in Windows PowerShell 5.1 to avoid PowerShell 7.4+
-ProgressActionnoise. - Placeholder check: no
{{left inDocs/Cmdlets/*.md. - Help file:
New-ExternalHelp -Path .\Docs\Cmdlets -OutputPath .\NTFSSecurity\en-US -Forcemust leavegit statusunchanged. - Pester: run detached (
Start-DetachedPowerShell.ps1) in Windows PowerShell 5.1: the launcher startspwsh, and its payload runspowershell.exe -NoProfile -EncodedCommandwith Pester imported by full path. A run withoutbin\Release\en-USmust fail. - Markdown lint:
npx markdownlint-cli2withMD013limited to prose (tables, code, and headings excluded) on the conceptual pages. - YAML:
ConvertFrom-Yaml(powershell-yaml) onappveyor.yml. - Links: AppVeyor step 02 (MarkdownLinkCheck 0.2.0) checks only relative
links in
Docs; it strips anchors and skips absolute URLs. Check anchors against GitHub's heading slugs, and the links inREADME.mdandCHANGELOG.md, with a script.