added windows guide

This commit is contained in:
Oscar Krause
2025-04-17 14:12:17 +02:00
parent 8263f5066e
commit a62d409575
2 changed files with 83 additions and 8 deletions

View File

@@ -1,19 +1,50 @@
# gridd-unlock-patcher # gridd-unlock-patcher
> [!note] Credits > [!note] Credits
> This code is built by `electricsheep49` > This code is built by `electricsheep49`. The Windows replacement script is written by `lcs`.
Only Linux is supported for executing the patcher, **Only Linux is supported for executing the patcher**,
see **[Releases](https://git.collinwebdesigns.de/oscar.krause/gridd-unlock-patcher/-/releases)**. see **[Releases](https://git.collinwebdesigns.de/oscar.krause/gridd-unlock-patcher/-/releases)**.
The patcher supports both Windows and Linux guests: The patcher supports both, Windows and Linux guests:
- For Windows guests, the GRID daemon is Display.Driver/nvxdapix.dll.
- **TODO**: Where is this installed? Also, **untested**.
- For Linux guests, execute `which nvidia-gridd` to find your GRID daemon. It's probably in /bin/.
## How to patch - For Windows guests, the GRID daemon is Display.Driver/nvxdapix.dll
- For Linux guests, execute `which nvidia-gridd` to find your GRID daemon. It's probably in `/bin/`.
# How to patch
**Prepare**
1. Download [latest release](https://git.collinwebdesigns.de/oscar.krause/gridd-unlock-patcher/-/releases) 1. Download [latest release](https://git.collinwebdesigns.de/oscar.krause/gridd-unlock-patcher/-/releases)
2. Make executable `chmod +x gridd-unlock-patcher` 2. Make executable `chmod +x gridd-unlock-patcher`
3. Run patch `gridd-unlock-patcher -g <GRID daemon to patch> -c /path/to/my_demo_root_certificate.pem` 3. Download your *FastAPI-DLS Root-CA* from `https://<your-dls-url>/-/config/root-ca`
## Linux
*This overwrites the given binary, make sure you have a backup!*
1. Run patch `gridd-unlock-patcher -g $(which nvidia-gridd) -c /path/to/my_root_certificate.pem`
2. Restart `nvidia-gridd` service
## Windows
*This overwrites the given dll, make sure you have a backup!*
1. Download [`windows-replace-nvxdapix.ps1`](windows-replace-nvxdapix.ps1) (written by `lcs`) to the Desktop of your
Windows machine
2. Run
`Get-ChildItem -Path "C:\Windows\System32\DriverStore\FileRepository" -Recurse -Filter "nvxdapix.dll" -ErrorAction SilentlyContinue | Select-Object -First 1`
3. Copy the `nvxdapix.dll` from the resulting path to your Linux host where the `gridd-unlock-patcher` is installed
4. Run patch `gridd-unlock-patcher -g /path/to/nvxdapix.dll -c /path/to/my_root_certificate.pem`
5. Copy the patched `nvxdapix.dll` back to the Desktop of your Windows machine
6. Run `powershell.exe -executionpolicy bypass -file "$HOME\Desktop\gridd-apply-patch.ps1"` as Administrator
Output should look like
```shell
PS C:\WINDOWS\system32> powershell.exe -executionpolicy bypass -file "$HOME\Desktop\gridd-apply-patch.ps1"
Searching for nvxdapix.dll in C:\Windows\System32\DriverStore\FileRepository...
Found DLL: C:\Windows\System32\DriverStore\FileRepository\nvgridsw.inf_amd64_847af0d59d1a7293\nvxdapix.dll
Replaced nvxdapix.dll successfully.
PS C:\WINDOWS\system32>
```

View File

@@ -0,0 +1,44 @@
# ========== Configuration ==========
$searchRoot = "C:\Windows\System32\DriverStore\FileRepository"
$dllName = "nvxdapix.dll"
$replacementDll = "$HOME\Desktop\nvxdapix.dll" # Path to the patched DLL
$logFile = "$HOME\dll_replacement_log.txt"
# ===================================
# Search for the DLL
Write-Host "Searching for $dllName in $searchRoot..."
$dllPath = Get-ChildItem -Path $searchRoot -Recurse -Filter $dllName -ErrorAction SilentlyContinue | Select-Object -First 1
# Kill the NV service before attempting to replace the DLL
Stop-Service NVDisplay.ContainerLocalSystem
if ($dllPath) {
$fullPath = $dllPath.FullName
Write-Host "Found DLL: $fullPath"
Add-Content -Path $logFile -Value "Found $dllName at: $fullPath"
# Take ownership
takeown /F $fullPath | Out-Null
# Grant full control to administrators
icacls $fullPath /grant Administratoren:F | Out-Null
# Attempt to stop processes using the DLL (optional: may not apply to DriverStore)
Get-Process | Where-Object {
$_.Modules | Where-Object { $_.FileName -eq $fullPath }
} | ForEach-Object {
Write-Host "Stopping process: $($_.Name) (PID: $($_.Id))"
Stop-Process -Id $_.Id -Force
}
# Replace the DLL
Copy-Item -Path $replacementDll -Destination $fullPath -Force
Write-Host "Replaced $dllName successfully."
Add-Content -Path $logFile -Value "Replaced $dllName at $fullPath on $(Get-Date)"
} else {
Write-Host "DLL not found."
Add-Content -Path $logFile -Value "Failed to find $dllName in $searchRoot on $(Get-Date)"
}
# Start the service after the replacement
Start-Service NVDisplay.ContainerLocalSystem