Problema: o código .NET é executado de um diretório, mas não outro, no mesmo disco [fechado

StackOverflow https://stackoverflow.com/questions/126228

  •  02-07-2019
  •  | 
  •  

Pergunta

Nosso aplicativo é um aplicativo não gerenciado Hybrid Win32 e um aplicativo gerenciado .NET 2.0. A parte Win32 é o principal executável, que em algum momento carrega e hospeda o tempo de execução .NET 2.0 e carrega alguns módulos gerenciados para abrir novas janelas WinForms.

Tivemos nossa parcela de problemas do tipo Caspol, mas hoje temos um problema muito estranho e espero nós resolvemos isso.

Em um servidor, acessado através da Citrix, se os arquivos de aplicativos estiverem localizados em um diretório localizado na área de trabalho do Usuário atualmente conectado, que é um administrador de servidor/domínio, o programa funciona bem. As janelas .NET abrem conforme o esperado.

No entanto, se movermos o diretório para a raiz do mesmo disco, que é um disco físico no servidor (para que nenhum mapeamento de SAN ou qualquer coisa que desencadearia um comando caspol no meu conhecimento) e mantenha tudo o mesmo, o mesmo usuário, a mesma configuração, etc., o aplicativo trava silenciosamente quando tentamos invocar as janelas .NET. Ele trava por meio de desaparecer, o que sugere que pode ser algo como um transbordamento de pilha. Estamos investigando a adição de registro a algumas partes do aplicativo para talvez descobrir o que acontece e onde, mas também estou postando essa pergunta aqui.

Até agora, verificamos que não há esquisitices na lista de acesso a Caspol, nada de estranho no cache ngen (eu estava pensando que talvez houvesse imagens corrompidas de antes, se o proprietário do servidor tivesse jogado com ele), e nenhuma esquisiticidade nas GAC (não usamos GAC para os assemblies).

Resumido:

  • Se o programa for executado a partir de u: documentos e configurações nome de usuário desktop diretório, ele funciona
  • Se for executado a partir de u: diretório, não
  • U: é um disco físico no servidor
  • Não há esquisitices aparentes em caches NGEN ou GAC
  • O tempo de execução do .NET direito está instalado, os arquivos certos para o nosso aplicativo foram instalados (e de fato funcionam bem se forem executados no local da área de trabalho)

Alguém com alguma coisa que possa ajudar?

Editar: Problema reasgado aqui com informações diferentes/outras e "resolvidas".

Foi útil?

Solução

Minha primeira facada seria executar o Monitor de Processos a partir de MS-Sysinternals e ver quais chamadas/resultados são diferentes para essas duas ocasiões. Talvez isso lhe desse algumas dicas para trabalhar (resultados diferentes para a mesma chamada, alguns erros no problema que não estão no bom ...)

Você pode baixar o Monitor de Processos do MS:http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

Outras dicas

Eu tinha exatamente esse problema há algum tempo. Depois de muito cabelo puxando, encontrei o problema.

Tenha muito cuidado ao usar o processo.start () ou quaisquer chamadas, porque, dependendo de como você o inicia, ele pode usar uma variedade de pastas como ambiente de trabalho (caminho atual, ambiente do sistema e assim por diante.

Meu primeiro pensamento é que você precisa garantir que não haja caminhos relativos/absolutos definidos no programa para referências a montagens, arquivos etc. que estão causando problemas ao mover o diretório raiz do aplicativo.

É possível que esteja relacionado a privilégios de usuário? Execute de Lua buzina checar. Mesmo que não esteja diretamente relacionado, essa ferramenta pode muito bem dar algumas dicas úteis.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top