Quali sono i motivi del fallimento delle named pipe locali di Windows?


14

Ci ho lavorato duramente tutto il giorno e sono bloccato. Questa mattina i miei colleghi asiatici mi hanno chiamato perché un componente aggiuntivo SolidWorks per il nostro sistema di gestione dei dati di prodotto non era in grado di comunicare con l'applicazione principale locale. Il problema riguarda i computer degli utenti finali in un dominio Windows. Abbiamo utilizzato i programmi di utilità READPIPE e MAKEPIPE dalla casella degli strumenti del server SQL per capire che il problema di fondo era la funzionalità della pipe di Windows.

  • L'utility MAKEPIPE crea una pipe ed è in attesa di un client. L'utilità READPIPE restituisce: "Impossibile aprire la pipe. Stato 53." Secondo http://support.microsoft.com/kb/110905 significa che il nome della rete non è stato trovato. Sul mio computer locale le pipe invia un "ciao" da READPIPE a MAKEPIPE senza problemi.
  • Il processo del server che abilita named pipe è in esecuzione.
  • Le impostazioni in HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Lanmanserver \ Parameters sembrano a posto. Nessuna impostazione del firewall per le pipe.
  • Il problema riguarda alcuni utenti ma non tutti. Non abbiamo apportato modifiche ai gruppi di dominio ad eccezione di alcuni gruppi di condivisione di rete.
  • Ho effettuato l'accesso come amministratore e comunque le pipe non funzioneranno.

Qualsiasi aiuto è apprezzato! Grazie.


Gli utenti interessati possono connettersi alle normali condivisioni di file sul server in questione?
Harry Johnston,

Al momento non ci sono problemi con le condivisioni. Questo non è un problema server / client. Entrambi i processi sono sullo stesso computer.
user152700,

Quando riproduci il problema, accedi a un computer interessato come amministratore, con READPIPE e MAKEPIPE, quali sono i comandi esatti che stai usando? (Modifica il tuo post per includerli anziché inserirli in un commento.)
Harry Johnston,

Grazie per il vostro sostegno. Questa è stata dura e documenterò la soluzione qui.
user152700,

Risposte:


12

Ci sono voluti 1,5 giorni per capirlo per ogni caso. Qui per la documentazione.

Sintomi

  • Il trascinamento della selezione nelle applicazioni non funziona.
  • La comunicazione tra processi, ad esempio tra l'app principale e i componenti aggiuntivi, non funziona.

Cause / sfondo

La comunicazione tra processi è implementata per alcune app tramite pipe denominate Windows (da non confondere con le pipe in stile UNIX). Vedere la documentazione MSDN: http://msdn.microsoft.com/en-us/library/aa365590.aspx

Potrebbero esserci diverse cause per il mancato funzionamento delle pipe dei nomi di Windows. Per verificare che i tubi siano la causa del problema, è possibile utilizzare gli strumenti MAKEPIPE e READPIPE. Questo articolo della KB descrive la procedura di test: http://support.microsoft.com/kb/68941 L'esploratore di processo dello strumento Sysinternals potrebbe anche essere utile per cercare quali pipe sono attualmente aperte. Utilizzare l'opzione "Trova -> Trova handle o DLL ..." e immettere il modello "\ Device \ NamedPipe \". Ti mostrerà quali processi hanno quali tubi si aprono. http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

Risoluzione dei problemi

Causa 1: l'applicazione è bloccata dal firewall Pipes

Windows può impedire alle applicazioni di utilizzare pipe denominate. Questo firewall normalmente non è abilitato ed è configurato tramite il registro. Vedere l'articolo di supporto MS qui: http://support.microsoft.com/kb/925890 . Verificare che il firewall di pipe non sia abilitato o aggiungere Keytech e tutti i componenti aggiuntivi all'elenco delle applicazioni consentite.

Causa 2: il servizio di condivisione file e stampanti non è abilitato.

Le pipe nominate sono abilitate dal processo che controlla anche la condivisione di file e stampanti. Verificare che questo processo sia in esecuzione utilizzando lo strumento Servizi di Windows. Il nome del servizio viene visualizzato come "Server" nell'elenco dei servizi. Il nome del servizio è LanmanServer e EXE è C: \ Windows \ system32 \ svchost.exe -k netsvcs

Causa 3: il firewall di Windows sta bloccando LanmanServer

Il firewall di Windows può bloccare le named pipe anche quando vengono utilizzate solo per le comunicazioni tra processi sulla stessa macchina. Soprattutto le regole del firewall locale e di dominio possono causare un conflitto. Due voci nell'elenco "Programmi consentiti per Windows Firewall" indicano un conflitto. Nella maggior parte dei casi questo problema può essere risolto utilizzando la finestra "Controlla lo stato del firewall". Se questa finestra mostra un'opzione per impostare le regole del firewall consigliate, le pipe possono spesso essere sbloccate usando questa opzione. In combinazione con le regole del firewall di dominio è talvolta necessario separare prima il PC dal dominio e quindi consentire il servizio di condivisione di file e stampanti.


3
Causa 1) Il firewall delle pipe influenza solo l'accesso remoto alle pipe con nome. Si noti, tuttavia, che la connessione a una pipe denominata utilizzando \\ machinename \ pipename probabilmente conta come accesso remoto anche se machinename è la macchina locale.
Harry Johnston,

3
Causa 2) Allo stesso modo, la condivisione di file e stampanti è richiesta solo per l'accesso remoto alle pipe nominate. Ancora una volta, \\ machinename \ pipename probabilmente conta come accesso remoto per questo scopo.
Harry Johnston,

Causa 3) Windows Firewall non dovrebbe essere in grado di bloccare le connessioni locali, anche se si utilizza \\ machinename \ pipename. Tuttavia, se ti trovi in ​​un dominio e Windows Firewall è mal configurato, potresti aver riscontrato problemi più diffusi, forse relativi all'autenticazione.
Harry Johnston,

@HarryJohnston Che tipo di autenticazione potrebbe essere bloccata? Come ServiceHost.Authenticationdescritto qui ?
iCantSeeSharp l'

Se ti trovi in ​​un dominio e l'accesso alla tua rete ai controller di dominio è bloccato da Windows Firewall (o per qualche altro motivo) potresti non essere in grado di autenticarti. Ciò non dovrebbe davvero influire sull'accesso alla pipe locale, ma su YMMV.
Harry Johnston,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.