Search This Blog

Tuesday, August 4, 2026

Uninstall Fonts Script


param (
    [string]$SourcePath = $PSScriptRoot
)

$FontsFolder = "$env:windir\Fonts"
$RegPath     = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts"

if (-not (Test-Path -Path $SourcePath -PathType Container)) {
    exit 1
}

$fonts = Get-ChildItem -Path $SourcePath -Filter "*.ttf" -Recurse -File -ErrorAction SilentlyContinue

if ($fonts.Count -eq 0) {
    exit 0
}

foreach ($font in $fonts) {
    $destFile = Join-Path $FontsFolder $font.Name
    $regName  = "$($font.BaseName) (TrueType)"

    try {
        # 1. Remove registry entry
        if (Get-ItemProperty -Path $RegPath -Name $regName -ErrorAction SilentlyContinue) {
            Remove-ItemProperty -Path $RegPath -Name $regName -Force -ErrorAction Stop
        }

        # 2. Delete font file
        if (Test-Path $destFile) {
            Remove-Item -Path $destFile -Force -ErrorAction Stop
        }
    }
    catch {
    }
}

exit 0

Install Fonts Script


param (
    [string]$SourcePath = $PSScriptRoot
)

$FontsFolder = "$env:windir\Fonts"
$RegPath     = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts"

if (-not (Test-Path -Path $SourcePath -PathType Container)) {
    exit 1
}

$fonts = Get-ChildItem -Path $SourcePath -Filter "*.ttf" -Recurse -File -ErrorAction SilentlyContinue

if ($fonts.Count -eq 0) {
    exit 0
}

foreach ($font in $fonts) {
    $destFile = Join-Path $FontsFolder $font.Name
    $regName  = "$($font.BaseName) (TrueType)"

    try {
        # Skip if already present
        if (Test-Path $destFile) {
            continue
        }

        # 1. Copy font file
        Copy-Item -Path $font.FullName -Destination $destFile -Force -ErrorAction Stop

        # 2. Register in registry
        if (-not (Get-ItemProperty -Path $RegPath -Name $regName -ErrorAction SilentlyContinue)) {
            New-ItemProperty -Path $RegPath -Name $regName -Value $font.Name -PropertyType String -Force | Out-Null
        }
	}
	catch {
	}
}

exit 0

Monday, February 9, 2026

How to setup Universal Print on Canon imageRUNNER

Reference: https://docs.citrix.com/en-us/citrix-virtual-apps-desktops/secure/tls-ups.html

1) Under "Network Settings" -> "TLS Settings"

Set and enable the following:

Maximum Version: TLS 1.3

Minimum Version: TLS 1.2

Encryption Algorithm:

AES-CBC (256-bit)

AES-GCM (256-bit)

Key Exchange Algorithm: ECDHE

Signature Algorithm: RSA

HMAC Algorithm: SHA384

2) Under "Network Settings" -> "Basic Settings", enabled "Use Universal Print" but disable "Verify Server Certificate". Enabling "Verify Server Certificate" will cause issues, such as, unable to register printer to Universal Print, and documents stuck in queue.

3) Enter Printer Name and Application ID : f9fc375c-c7ba-4e5c-b213-23affd792cc1, everything else is by default "Initial Settings"

 
 
 
 

6) Network Settings > Settings for Universal Print

Click "Register"

Registration Status

Click [Register] and register the device using the URL for registration.
To display the latest registered information, click the update icon for [Last Updated].
Registration Status :Not Registered

Wednesday, September 6, 2023

Acrobat Pro 64-bit - The File table entry 'snapshot_blob.bin' has no associated entry in the Media table.

 Error: Product: Adobe Acrobat (64-bit) -- Error 2602.The File table entry 'snapshot_blob.bin' has no associated entry in the Media table.

Solution: Open MSI with Orca, change LastSequence for last file in Media table to last file sequence in File table.