Eu tenho um site ASP herdado com o objeto COM em execução no IIS 7.0 no Windows Server 2008. Isso geralmente funciona muito bem, mas acabei encontrando um problema bastante estranho ultimamente para o qual não consigo encontrar uma solução.
Há uma página que chama um objeto COM personalizado (código VB6, sim, eu sei) que chama um objeto COM de renderização gráfica de terceiros. Após o teste, descobrimos que esse código funciona bem no Windows 2003 e no IIS 6.0, mas não no Windows Server 2008 e no IIS 7.0. O problema é que o mecanismo de renderização de terceiros não usa a fonte True Type (personalizada instalada) adequada e parece usar uma fonte padrão.
Quando o código da página ASP é executado como um arquivo VBScript em uma conta de Administrador, a renderização usa a fonte correta. Então você pode pensar que é um problema de permissão. No entanto, quando eu executo o VBScript sob a mesma conta que o site e o pool de aplicativos do IIS está sendo executado, a fonte correta também é usada. Portanto, somente quando o código é executado no IIS 7.0, ele não é renderizado com a fonte correta. Se ele for executado a partir de uma caixa CMD na mesma conta que o IIS está usando, ele será processado corretamente.
A conta que o IIS está usando é uma conta personalizada criada (não NETWORK SERVICE) com muito poucos privilégios, porém o suficiente para funcionar. O site foi executado há anos também usando objetos COM de terceiros. É a primeira vez que uma questão como essa surgiu.
Achei que as permissões na fonte podem ser um problema, embora isso não explicasse por que funcionaria fora do IIS. Para certificar-se de que não faz parte do problema, dei ao grupo Todos permissões de leitura na fonte específica. Isso não resolveu o problema.
Considerando todos os itens acima, acho que minha pergunta se resume ao que o IIS está fazendo de maneira diferente, que pode fazer com que o código não use a fonte correta. Eu sei que o IIS 7.x está colocando automaticamente a conta do pool de aplicativos no grupo IIS_IUSRS antes de iniciar o pool de aplicativos. Mas eu já adicionei manualmente a conta a esse grupo, assim também quando executo o VBScript a partir de uma caixa CMD nessa conta, a conta também faz parte do grupo IIS_IUSRS. Então, isso deve ser o mesmo.
Estou ficando sem ideias para resolver isso. Quaisquer ideias, sugestões ou sugestões são bem-vindas.