Last active
September 8, 2025 14:31
-
-
Save lzlrd/f4b0e10c1f5c4777ee676abe052b2efb to your computer and use it in GitHub Desktop.
Windows Scripts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #Requires -RunAsAdministrator | |
| <# | |
| .SYNOPSIS | |
| Enables Message Signaled Interrupts (MSI) for all applicable PCI devices. | |
| .DESCRIPTION | |
| This script navigates the Windows Registry to locate the interrupt management | |
| settings for all enumerated PCI devices. It then sets the 'MSISupported' DWORD | |
| value to 1 for each device, which enables MSI mode. This can potentially | |
| improve interrupt handling and system performance for certain hardware. | |
| If a device has an 'Interrupt Management' key but is missing the required | |
| 'MessageSignaledInterruptProperties' subkey, this script will create it. | |
| This script must be run with administrator privileges to modify | |
| HKEY_LOCAL_MACHINE. | |
| .NOTES | |
| Author: Gemini | |
| Version: 1.1 | |
| #> | |
| function Enable-MsiModeForAllPciDevices { | |
| [CmdletBinding(SupportsShouldProcess = $true)] | |
| param() | |
| Write-Host "Starting the process to enable MSI mode for all PCI devices..." -ForegroundColor Yellow | |
| # Define the base path and target keys/properties. | |
| $basePath = "HKLM:\SYSTEM\CurrentControlSet\Enum\PCI" | |
| $interruptMgmtSubkey = "Device Parameters\Interrupt Management" | |
| $msiPropsSubkey = "MessageSignaledInterruptProperties" | |
| $propertyName = "MSISupported" | |
| $propertyValue = 1 | |
| Try { | |
| # Get all vendor subkeys under the main PCI key. | |
| $vendorKeys = Get-ChildItem -Path $basePath -ErrorAction Stop | Select-Object -ExpandProperty PSPath | |
| If ($null -Eq $vendorKeys) { | |
| Write-Warning "No PCI vendor keys found under '$basePath'." | |
| Return | |
| } | |
| # Iterate through each vendor and device key to find the target properties. | |
| ForEach ($vendorKey in $vendorKeys) { | |
| $deviceKeys = Get-ChildItem -Path $vendorKey -ErrorAction SilentlyContinue | Select-Object -ExpandProperty PSPath | |
| ForEach ($deviceKey in $deviceKeys) { | |
| $interruptMgmtPath = Join-Path -Path $deviceKey -ChildPath $interruptMgmtSubkey | |
| # Check if the 'Interrupt Management' key exists. This is a prerequisite. | |
| If (Test-Path -Path $interruptMgmtPath) { | |
| $msiPath = Join-Path -Path $interruptMgmtPath -ChildPath $msiPropsSubkey | |
| # If the MSI properties subkey does not exist, create it. | |
| If (-Not (Test-Path -Path $msiPath)) { | |
| If ($PSCmdlet.ShouldProcess($msiPath, "Creating missing registry key...")) { | |
| Try { | |
| New-Item -Path $msiPath -Force -ErrorAction Stop | Out-Null | |
| Write-Host "Created key: $msiPath" -ForegroundColor Green | |
| } | |
| Catch { | |
| Write-Error "Failed to create key at '$msiPath'. Error: $_" | |
| # Skip to the next device if key creation fails. | |
| Continue | |
| } | |
| } | |
| } | |
| # Only proceed if the key exists (handles -WhatIf where the key isn't actually created). | |
| If (Test-Path -Path $msiPath) { | |
| Try { | |
| $currentValue = (Get-ItemProperty -Path $msiPath -Name $propertyName -ErrorAction SilentlyContinue).$propertyName | |
| If ($currentValue -Eq $propertyValue) { | |
| Write-Host "[SKIPPED] '$propertyName' is already set to '$propertyValue' at $msiPath" -ForegroundColor Gray | |
| } | |
| Else { | |
| If ($PSCmdlet.ShouldProcess($msiPath, "Set '$propertyName' to '$propertyValue'")) { | |
| Set-ItemProperty -Path $msiPath -Name $propertyName -Value $propertyValue -Type DWord -Force -ErrorAction Stop | |
| Write-Host "Set '$propertyName' to '$propertyValue' at $msiPath" -ForegroundColor Green | |
| } | |
| } | |
| } | |
| Catch { | |
| Write-Error "Failed to set property at '$msiPath'. Error: $_" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| Write-Host "Script finished." -ForegroundColor Yellow | |
| Write-Host "A system reboot is recommended for all changes to take effect." | |
| } | |
| Catch { | |
| Write-Error "An error occurred while accessing the base PCI path '$basePath'. Please ensure you are running this script as an Administrator. Error: $_" | |
| } | |
| } | |
| # --- Execution --- | |
| # The script can be run with a -WhatIf parameter to see what changes would be made without actually making them. | |
| # From PowerShell, run: .\Enable-MSI-Mode.ps1 -WhatIf | |
| # | |
| # To execute the changes for real, run the script without any parameters: | |
| # From PowerShell, run: .\Enable-MSI-Mode.ps1 | |
| if ($args -Contains '-WhatIf') { | |
| # If -WhatIf is passed as a script argument, call the function with -WhatIf. | |
| Enable-MsiModeForAllPciDevices -WhatIf | |
| } | |
| else { | |
| # Otherwise, run the function normally. | |
| Enable-MsiModeForAllPciDevices | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #Requires -RunAsAdministrator | |
| <# | |
| .SYNOPSIS | |
| Patches the 32-bit and 64-bit Nvidia NvFBC libraries. | |
| .DESCRIPTION | |
| This script checks the file contents of the Nvidia Frame Buffer Capture (NvFBC) | |
| libraries against known patch data (stored as Base64 strings). If a library | |
| does not match the patched version, it backs up the original library (by | |
| renaming it with a trailing underscore) and writes the new patched version. | |
| This script must be run with administrator privileges to modify files in | |
| the System32 and SysWOW64 directories. | |
| .NOTES | |
| Author: Diab Neiroukh | |
| Version: 1.1 | |
| #> | |
| function Invoke-NvFBCPatch { | |
| [CmdletBinding(SupportsShouldProcess = $true)] | |
| param() | |
| # Array containing patch data: [Base64String, FilePath, BackupFilePath, Architecture]. | |
| $patchArr = @() | |
| $patchArr += , @('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4DwAAM48AACWPAAAojwAAAAAAAA5AkdldEVudmlyb25tZW50VmFyaWFibGVXAMsAQ3JlYXRlRmlsZVcAIwVTZXRGaWxlUG9pbnRlckV4AACGAENsb3NlSGFuZGxlAHMEUmVhZEZpbGUAAMQDTG9hZExpYnJhcnlXAACuAkdldFByb2NBZGRyZXNzAAD0AkdldFRlbXBGaWxlTmFtZVcAABIGV3JpdGVGaWxlAEtFUk5FTDMyLmRsbAAAEABfX0N4eEZyYW1lSGFuZGxlcjMAACUAX19zdGRfdHlwZV9pbmZvX2Rlc3Ryb3lfbGlzdAAASABtZW1zZXQAADUAX2V4Y2VwdF9oYW5kbGVyNF9jb21tb24AIQBfX3N0ZF9leGNlcHRpb25fY29weQAAIgBfX3N0ZF9leGNlcHRpb25fZGVzdHJveQABAF9DeHhUaHJvd0V4Y2VwdGlvbgAAVkNSVU5USU1FMTQwLmRsbAAAOABfaW5pdHRlcm0AOQBfaW5pdHRlcm1fZQAIAF9jYWxsbmV3aAAZAG1hbGxvYwAAGABmcmVlAABBAF9zZWhfZmlsdGVyX2RsbAAZAF9jb25maWd1cmVfbmFycm93X2FyZ3YAADUAX2luaXRpYWxpemVfbmFycm93X2Vudmlyb25tZW50AAA2AF9pbml0aWFsaXplX29uZXhpdF90YWJsZQAAJABfZXhlY3V0ZV9vbmV4aXRfdGFibGUAFwBfY2V4aXQAAGFwaS1tcy13aW4tY3J0LXJ1bnRpbWUtbDEtMS0wLmRsbABhcGktbXMtd2luLWNydC1oZWFwLWwxLTEtMC5kbGwAAK0FVW5oYW5kbGVkRXhjZXB0aW9uRmlsdGVyAABtBVNldFVuaGFuZGxlZEV4Y2VwdGlvbkZpbHRlcgAXAkdldEN1cnJlbnRQcm9jZXNzAIwFVGVybWluYXRlUHJvY2VzcwAAhgNJc1Byb2Nlc3NvckZlYXR1cmVQcmVzZW50AE0EUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIAGAJHZXRDdXJyZW50UHJvY2Vzc0lkABwCR2V0Q3VycmVudFRocmVhZElkAADpAkdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lAGMDSW5pdGlhbGl6ZVNMaXN0SGVhZAB/A0lzRGVidWdnZXJQcmVzZW50AAAAAAAAAAAA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', "$env:WINDIR\SysWOW64\NvFBC.dll", "$env:WINDIR\SysWOW64\NvFBC_.dll", "32-bit") | |
| $patchArr += , @('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AAAhAF9fc3RkX2V4Y2VwdGlvbl9jb3B5AAAiAF9fc3RkX2V4Y2VwdGlvbl9kZXN0cm95AAEAX0N4eFRocm93RXhjZXB0aW9uAABWQ1JVTlRJTUUxNDBfMS5kbGwAAFZDUlVOVElNRTE0MC5kbGwAADYAX2luaXR0ZXJtADcAX2luaXR0ZXJtX2UACABfY2FsbG5ld2gAGQBtYWxsb2MAABgAZnJlZQAAPwBfc2VoX2ZpbHRlcl9kbGwAGABfY29uZmlndXJlX25hcnJvd19hcmd2AAAzAF9pbml0aWFsaXplX25hcnJvd19lbnZpcm9ubWVudAAANABfaW5pdGlhbGl6ZV9vbmV4aXRfdGFibGUAACIAX2V4ZWN1dGVfb25leGl0X3RhYmxlABYAX2NleGl0AABhcGktbXMtd2luLWNydC1ydW50aW1lLWwxLTEtMC5kbGwAYXBpLW1zLXdpbi1jcnQtaGVhcC1sMS0xLTAuZGxsAADTBFJ0bENhcHR1cmVDb250ZXh0ANoEUnRsTG9va3VwRnVuY3Rpb25FbnRyeQAA4QRSdGxWaXJ0dWFsVW53aW5kAAC8BVVuaGFuZGxlZEV4Y2VwdGlvbkZpbHRlcgAAewVTZXRVbmhhbmRsZWRFeGNlcHRpb25GaWx0ZXIAHQJHZXRDdXJyZW50UHJvY2VzcwCaBVRlcm1pbmF0ZVByb2Nlc3MAAIkDSXNQcm9jZXNzb3JGZWF0dXJlUHJlc2VudABQBFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyAB4CR2V0Q3VycmVudFByb2Nlc3NJZAAiAkdldEN1cnJlbnRUaHJlYWRJZAAA8AJHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZQBsA0luaXRpYWxpemVTTGlzdEhlYWQAggNJc0RlYnVnZ2VyUHJlc2VudAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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', "$env:WINDIR\System32\NvFBC64.dll", "$env:WINDIR\System32\NvFBC64_.dll", "64-bit") | |
| Try { | |
| ForEach ($item in $patchArr) { | |
| $base64String = $item[0] | |
| $filePath = $item[1] | |
| $backupPath = $item[2] | |
| $arch = $item[3] | |
| Write-Host "Starting the process to patch the NvFBC libraries..." -ForegroundColor Yellow | |
| If (-Not(Test-Path $filePath)) { | |
| Write-Warning "Library not found at '$filePath'. Skipping." | |
| Continue | |
| } | |
| If ([Convert]::ToBase64String((Get-Content -Path $filePath -Encoding Byte)) -Ne $base64String) { | |
| If ($PSCmdlet.ShouldProcess($filePath, "Patching the $arch library...")) { | |
| Try { | |
| # Since the script requires admin, we can perform the actions directly. | |
| Move-Item -Path $filePath -Destination $backupPath -Force -ErrorAction Stop | |
| [IO.File]::WriteAllBytes($filePath, [Convert]::FromBase64String($base64String)) | |
| Write-Host "The NvFBC library ($arch) was patched." -ForegroundColor Green | |
| } | |
| Catch { | |
| Write-Error "Failed to patch '$filePath'. Error: $_" | |
| } | |
| } | |
| } | |
| Else { | |
| Write-Host "[SKIPPED] The patch has already been applied to the $arch library at '$filePath'." -ForegroundColor Gray | |
| } | |
| } | |
| Write-Host "Script finished." -ForegroundColor Yellow | |
| Write-Host "A system reboot is recommended for all changes to take effect." | |
| } | |
| Catch { | |
| Write-Error "An unexpected error occurred while patching the NvFBC libraries. Error: $_" | |
| } | |
| } | |
| # --- Execution --- | |
| # The script can be run with a -WhatIf parameter to see what changes would be made without actually making them. | |
| # From PowerShell, run: .\Script1.ps1 -WhatIf | |
| # | |
| # To execute the changes for real, run the script without any parameters: | |
| # From PowerShell, run: .\Script1.ps1 | |
| If ($args -Contains '-WhatIf') { | |
| # If -WhatIf is passed as a script argument, call the function with -WhatIf. | |
| Invoke-NvFBCPatch -WhatIf | |
| } | |
| Else { | |
| # Otherwise, run the function normally. | |
| Invoke-NvFBCPatch | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <# | |
| .SYNOPSIS | |
| Creates and manages symbolic links for a central binary directory. | |
| .DESCRIPTION | |
| This script automates the process of creating a flat directory of symbolic | |
| links that point to various executable and library files scattered across | |
| subdirectories. It first removes any existing symlinks in the target directory | |
| to ensure a clean slate. It then finds all .exe, .dll, and .cmd files in | |
| the immediate subfolders (and their 'bin' subfolders) and creates symlinks | |
| for them. It also creates a set of specific, predefined symlinks. | |
| .NOTES | |
| Author: Diab Neiroukh | |
| Version: 1.1 | |
| #> | |
| function Update-BinSymlinks { | |
| [CmdletBinding(SupportsShouldProcess = $true)] | |
| param() | |
| Write-Host "Starting the process to update binary symlinks..." -ForegroundColor Yellow | |
| # The central directory where symlinks will be created. | |
| $binDir = "$env:HOMEDRIVE$env:HOMEPATH\Binaries" | |
| # Remove all existing symlinks in the target directory. | |
| $existingSymlinks = Get-ChildItem -Path $binDir -File | Where-Object { $_.LinkType -Eq "SymbolicLink" } | |
| ForEach ($symlink in $existingSymlinks) { | |
| If ($PSCmdlet.ShouldProcess($symlink.FullName, "Removing existing symlink...")) { | |
| Try { | |
| Remove-Item -Path $symlink.FullName -Force | |
| Write-Host "Removed symlink: $($symlink.Name)." | |
| } | |
| Catch { | |
| Write-Error "Failed to remove symlink $($symlink.Name): $_." | |
| } | |
| } | |
| } | |
| Write-Host "Finished removing $($existingSymlinks.Count) existing symlinks." | |
| # Find all target files to be linked. | |
| Write-Host "Searching for files to link..." | |
| $filesToLink = @() | |
| # Define extensions with a leading dot for accurate matching against the .Extension property. | |
| $extensions = @(".exe", ".dll", ".cmd") | |
| # Find files in direct subfolders (1 level deep). | |
| $filesToLink += Get-ChildItem -Path $binDir -Directory | Get-ChildItem -File -Recurse -Depth 0 | Where-Object { $extensions -Contains $_.Extension } | |
| # Find files within a 'bin' subfolder inside the direct subfolders. | |
| $filesToLink += Get-ChildItem -Path $binDir -Directory | Get-ChildItem -Filter "bin" -Directory -ErrorAction SilentlyContinue | Get-ChildItem -File | Where-Object { $extensions -Contains $_.Extension } | |
| # Create symlinks for each discovered file. | |
| ForEach ($file in $filesToLink) { | |
| $destPath = Join-Path -Path $binDir -ChildPath $file.Name | |
| If (Test-Path $destPath) { | |
| # Only show the warning if not running in -WhatIf mode. | |
| If (-Not $PSBoundParameters.ContainsKey('WhatIf')) { | |
| Write-Warning "[SKIPPED] A file or link named '$($file.Name)' already exists." -ForegroundColor Gray | |
| } | |
| Continue | |
| } | |
| If ($PSCmdlet.ShouldProcess($destPath, "Creating symlink to $($file.FullName)...")) { | |
| Try { | |
| New-Item -ItemType SymbolicLink -Path $destPath -Target $file.FullName | Out-Null | |
| Write-Host "Created symlink: $($file.Name) -> $($file.FullName)." -ForegroundColor Green | |
| } | |
| Catch { | |
| Write-Error "Failed to create symlink for $($file.Name): $_." | |
| } | |
| } | |
| } | |
| # Create additional specific symlinks. | |
| $additionalSymlinks = @{ | |
| "upnpc.exe" = "upnpc-shared.exe" | |
| "SeaChest_Lite.exe" = "SeaChest_Lite_windows_x86_64.exe" | |
| "nano.exe" = "..\AppData\Local\Microsoft\WinGet\Links\nano.exe" | |
| } | |
| ForEach ($file in $additionalSymlinks.GetEnumerator()) { | |
| $filePath = Join-Path -Path $binDir -ChildPath $file.Key | |
| $destPath = Join-Path -Path $binDir -ChildPath $file.Value | |
| If (-Not (Test-Path $destPath)) { | |
| Write-Warning "[SKIPPED] Target file does not exist: $destPath." -ForegroundColor Gray | |
| Continue | |
| } | |
| If ($PSCmdlet.ShouldProcess($filePath, "Creating specific symlink to $($file.Value)...")) { | |
| Try { | |
| New-Item -ItemType SymbolicLink -Path $filePath -Target $destPath -Force | Out-Null | |
| Write-Host "Created symlink: $($file.Key) -> $($file.Value)." -ForegroundColor Green | |
| } | |
| Catch { | |
| Write-Error "Failed to create specific symlink for $($file.Key): $_" | |
| } | |
| } | |
| } | |
| # Add symlink to the Update Binaries script. | |
| $updateScriptPath = "$env:HOMEDRIVE$env:HOMEPATH\Scripts\Update Binaries.ps1" | |
| $updateScriptDest = Join-Path -Path $binDir -ChildPath "Update Binaries.ps1" | |
| If (Test-Path $updateScriptPath) { | |
| If ($PSCmdlet.ShouldProcess($updateScriptDest, "Creating symlink to update script...")) { | |
| Try { | |
| New-Item -ItemType SymbolicLink -Path $updateScriptDest -Target $updateScriptPath -Force | Out-Null | |
| Write-Host "Created symlink: Update Binaries.ps1 -> $updateScriptPath." -ForegroundColor Green | |
| } | |
| Catch { | |
| Write-Error "Failed to create symlink for Update Binaries.ps1: $_." | |
| } | |
| } | |
| } | |
| Else { | |
| Write-Warning "[SKIPPED] Target script does not exist: $updateScriptPath." -ForegroundColor Gray | |
| } | |
| Write-Host "Script finished." -ForegroundColor Yellow | |
| } | |
| # --- Execution --- | |
| # The script can be run with a -WhatIf parameter to see what changes would be made without actually making them. | |
| # From PowerShell, run: .\Script2.ps1 -WhatIf | |
| # | |
| # To execute the changes for real, run the script without any parameters: | |
| # From PowerShell, run: .\Script2.ps1 | |
| If ($args -Contains '-WhatIf') { | |
| # If -WhatIf is passed as a script argument, call the function with -WhatIf. | |
| Update-BinSymlinks -WhatIf | |
| } | |
| Else { | |
| # Otherwise, run the function normally. | |
| Update-BinSymlinks | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment