Problema: il codice .NET viene eseguito da una directory, ma non da un'altra, sullo stesso disco [chiuso]

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

  •  02-07-2019
  •  | 
  •  

Domanda

La nostra applicazione è un'applicazione non gestita ibrida Win32 e un'applicazione gestita .NET 2.0. La parte Win32 è l'eseguibile principale, che a un certo punto carica e ospita il runtime .NET 2.0 e carica alcuni moduli gestiti per aprire nuove finestre di winform.

Abbiamo avuto la nostra parte di problemi di tipo CASPOL, ma oggi abbiamo un problema molto strano e spero che qualcuno possa darmi alcuni suggerimenti o idee, o praticamente qualsiasi cosa in realtà, che possa innescare una scintilla di qualcosa ciò ci aiuterebbe a risolvere questo problema.

Su un server, accessibile tramite citrix, se i file dell'applicazione si trovano in una directory situata sul desktop dell'utente attualmente connesso, che è un amministratore server / dominio, il programma funziona correttamente. Le finestre .NET si aprono come previsto.

Tuttavia, se spostiamo la directory nella radice dello stesso disco, che è un disco fisico nel server (quindi nessuna mappatura SAN o qualsiasi cosa che possa attivare un comando CASPOL per quanto ne so ) e mantieni tutto lo stesso, stesso utente, stessa configurazione, ecc. , l'applicazione si blocca silenziosamente quando proviamo a richiamare le finestre di .NET. Si blocca semplicemente scomparendo, il che suggerisce che potrebbe essere qualcosa di simile a un overflow dello stack. Stiamo cercando di aggiungere la registrazione ad alcune parti dell'app per forse essere in grado di capire cosa succede e dove, ma sto postando anche questa domanda qui.

Finora abbiamo verificato che non ci sono stranezze nell'elenco di accesso CASPOL, niente di strano nella cache NGEN (stavo pensando che forse c'erano immagini corrotte da prima, se il proprietario del server ci avesse giocato), e no stranezze nel GAC (non usiamo GAC per le assemblee).

Riassumendo:

  • Se il programma viene eseguito dalla directory U: \ Documents and Settings \ USERNAME \ Desktop \, funziona
  • Se viene eseguito dalla directory U: \, non
  • U: è un disco fisico nel server
  • Nessuna apparente stranezza nelle cache NGEN o GAC
  • È installato il runtime .NET giusto, sono stati installati i file giusti per la nostra applicazione (e funzionano davvero bene se eseguiti dalla posizione del desktop)

Chiunque abbia qualcosa che potrebbe aiutare?

Modifica: Problema ri-chiesto qui con diverse / altre informazioni e" risolto ".

È stato utile?

Soluzione

Il mio primo colpo sarebbe quello di eseguire il monitor di processo da MS-Sysinternals e guardare quali chiamate / risultati sono diversi in queste due occasioni. Forse ciò ti darebbe alcuni suggerimenti su cui lavorare (risultati diversi per la stessa chiamata, alcuni errori nell'esecuzione del problema che non sono in quello buono ...)

Puoi scaricare Process Monitor da MS: http://technet.microsoft.com/en-us/sysinternals/bb896645. aspx

Altri suggerimenti

Ho avuto esattamente questo problema qualche tempo fa. Dopo aver tirato molti capelli ho riscontrato il problema.

Prestare molta attenzione quando si utilizza Process.Start () o tali chiamate, perché a seconda di come si avvia può utilizzare una varietà di cartelle come ambiente di lavoro (percorso corrente, ambiente di sistema e così via.

Il mio primo pensiero è che è necessario assicurarsi che non ci siano percorsi relativi / assoluti definiti nel programma per riferimenti ad assiemi, file, ecc. che causano problemi quando si sposta la directory radice dell'applicazione.

È possibile che sia correlato ai privilegi degli utenti? Eseguilo da LUA Buglight per verificare. Anche se non è direttamente correlato, tale strumento potrebbe fornire alcuni suggerimenti utili.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top