Análise
As funções da API do Windows que lida com essas caixas de diálogo estão localizados no arquivo de biblioteca comdlg32.dll
, que geralmente está localizado em C:\Windows\System32
:
The Common Dialog Box Library contains a set of dialog boxes for performing common application tasks, such as opening files, choosing color values, and printing documents.
Source: Common Dialog Box Library
Neste caso, o arquivo foi substituído por uma versão mais antiga para o Windows 9x:
Size: 176128 bytes
Version: 4.72.3510.2300
Como comparação, o seguinte é o arquivo original que acompanha o Windows XP SP3:
Size: 276992 bytes
Version: 6.00.2900.5512
Esse problema é chamado stomping de DLL e geralmente ocorre quando um programa sobrescreve uma biblioteca do sistema com uma anterior, versão incompatível. A execução de notepad
confirmou isso rapidamente:
The procedure entry point PrintDlgExW could not be located in the dynamic link library comdlg32.dll.
Resolução
Você pode executar uma verificação do sistema executando o comando sfc /scannow
. No caso de qualquer arquivo do sistema estar faltando ou estar corrompido, o programa tentará restaurá-lo. Quando necessário, você será solicitado a inserir o CD de instalação do Windows XP.
Observação Este procedimento exige direitos de administrador.
Solução alternativa
Se você tiver acesso a uma mídia de instalação do Windows XP SP3, poderá obter o arquivo original copiando o arquivo COMDLG32.DL_
dentro da pasta I386
. Então você tem que descompactá-lo executando os seguintes comandos em um prompt de comando:
cd /d "X:\Folder\containing\COMDLG32.DL_"
expand COMDLG32.DL_ comdlg32.dll
Neste ponto, você pode inicializar qualquer CD / DVD / USB Linux ao vivo e, em seguida, substituir manualmente o antigo arquivo comdlg32.dll
pelo arquivo correto.