|
Server : Apache/2.4.58 (Win64) OpenSSL/3.1.3 PHP/8.2.12 System : Windows NT SERVER-PC 10.0 build 26200 (Windows 11) AMD64 User : ServerPC ( 0) PHP Version : 8.2.12 Disable Function : NONE Directory : C:/Windows/diagnostics/system/Printer/ |
Upload File : |
# Copyright � 2008, Microsoft Corporation. All rights reserved.
#
# By modifying the related registry key and refreshing policy resolves the issue of spooler crashing.
#
Import-LocalizedData -BindingVariable localizationString -FileName CL_LocalizationData
Write-DiagProgress -activity $localizationString.progress_rs_spoolerCrashing
#
# modify registry key
#
if(-not(Test-Path "HKLM:\Software\Policies\Microsoft\Windows NT\Printers"))
{
New-Item -Path "HKLM:\Software\Policies\Microsoft\Windows NT\Printers"
}
if((Get-ItemProperty "HKLM:\Software\Policies\Microsoft\Windows NT\Printers" "PrintDriverIsolationExecutionPolicy") -eq $null)
{
New-ItemProperty -Path "HKLM:\Software\Policies\Microsoft\Windows NT\Printers" -Name "PrintDriverIsolationExecutionPolicy" -PropertyType DWORD -Value 1
}
if((Get-ItemProperty "HKLM:\Software\Policies\Microsoft\Windows NT\Printers" "PrintDriverIsolationOverrideCompat") -eq $null)
{
New-ItemProperty -Path "HKLM:\Software\Policies\Microsoft\Windows NT\Printers" -Name "PrintDriverIsolationOverrideCompat" -PropertyType DWORD -Value 1
}
Set-ItemProperty "HKLM:\Software\Policies\Microsoft\Windows NT\Printers" "PrintDriverIsolationExecutionPolicy" 1
Set-ItemProperty "HKLM:\Software\Policies\Microsoft\Windows NT\Printers" "PrintDriverIsolationOverrideCompat" 1
#
# refresh polify
#
$RefreshPolicyDefinition = @"
[DllImport("Userenv.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool RefreshPolicy([MarshalAs(UnmanagedType.Bool)] bool bMachine);
"@
$RefreshPolicyType = Add-Type -MemberDefinition $RefreshPolicyDefinition -Name "RefreshPolicyType" -UsingNamespace "System.Reflection","System.Diagnostics" -PassThru
[bool]$return = $RefreshPolicyType::RefreshPolicy($true)
[int]$errorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error()
if(-not $return)
{
WriteFileAPIExceptionReport "RS_SpoolerCrashing" "RefreshPolicy" $errorCode
}