This guide focuses on two things:
- Building every component (native core, WPF UI, CLI) with a single command.
- Driving the Proxmox smoke test that deploys the CLI to the test VM, executes it, and captures the before/after values automatically.
The original architecture notes are still valid, but the commands below are all you need to build and test the solution end-to-end.
- Dev machine with PowerShell,
dotnetSDK 8, Visual Studio build tools,winget, and SSH access to Proxmox. - Proxmox host
192.168.0.130, VMID102, snapshotbaseline. - Windows VM credentials:
john / 1at192.168.0.199. - Proxmox root credentials:
root@pam / hellokitty123.
Adjust the values in the commands if your environment differs.
pwsh .\scripts\build_all.ps1 -Configuration ReleaseThis script:
- Runs
build.ps1for the nativePrivacyCore.dll. - Builds the WPF UI (
PrivacyFirst.exe). - Builds the CLI front-end (
PrivacyFirst.Cli.exe). - Drops outputs into
x64\Release\(orx64\Debug\if you pass-Configuration Debug).
# Change registry HWIDs
.\x64\Release\PrivacyFirst.Cli.exe execute 3
# Spoof multiple disk signatures at once
.\x64\Release\PrivacyFirst.Cli.exe execute 5 --drives C,D
# Restore registry HWIDs
.\x64\Release\PrivacyFirst.Cli.exe restore 3python privacyfirst\proxmox_script_runner.py `
--mode cli `
--proxmox-host 192.168.0.130 `
--proxmox-user root@pam `
--proxmox-password hellokitty123 `
--vmid 102 `
--snapshot baseline `
--vm-ip 192.168.0.199 `
--vm-user john `
--vm-password 1 `
--build-root C:\repos\privacyfirst\x64\Release `
--remote-dir C:\PrivacyFirstTest `
--log-file proxmox_cli_run.log `
--shutdown-vmWhat this does:
- Rolls the VM back to the
baselinesnapshot and powers it on. - Waits for SSH, zips the Release folder, uploads a single archive, and extracts it into
C:\PrivacyFirstTest. - Detects if the VM is missing the .NET 8 Desktop Runtime, installs it via
winget, and reruns the CLI automatically. - Runs a full privacy pass:
list --values(baseline snapshot of identifiers)execute/restore 3(Registry HWIDs)execute/restore 5(Disk IDs)execute/restore 7(Primary MAC address)execute/restore 8(Monitor serial)execute/restore 9(USB peripheral serials)execute 10(Privacy cleaner sweep with stats)
- Shuts the VM down again when everything succeeds.
All progress (including SSH retries, runtime installation, and CLI output) is captured in proxmox_cli_run.log for easy auditing.
After building, start the UI directly from the Release folder (run as Administrator for registry changes):
Start-Process -FilePath C:\repos\privacyfirst\x64\Release\PrivacyFirst.exe -Verb RunAsThis opens the WPF dashboard so you can toggle operations interactively or observe the state that the CLI changed.
- Build everything:
pwsh .\scripts\build_all.ps1 - Run automated CLI test:
python privacyfirst\proxmox_script_runner.py ...(command above) - Launch GUI:
Start-Process C:\repos\privacyfirst\x64\Release\PrivacyFirst.exe -Verb RunAs
Keep proxmox_cli_run.log from each run—it contains the entire transcript, including the “before” and “after” registry values, runtime deployment status, and VM lifecycle events. !*** End Patch