Domanda

Questo problema si ripresenta ogni tanto al lavoro. La nostra macchina di compilazione può accedere ai suoi file tramite una normale condivisione di file di Windows. Se qualcuno sfoglia una cartella in remoto sulla macchina e lascia la finestra aperta durante la notte, la compilazione non riesce (come ha fatto ora). La finestra di Explorer ha lasciato punti aperti in una delle sottocartelle nella struttura di origine. La build elimina l'origine e esegue un checkout pulito prima della creazione. L'eliminazione non riesce.

In questo momento, vorrei far funzionare la build. Ho effettuato l'accesso da casa e preferirei non riavviare la macchina di compilazione. Non riesco a trovare la persona la cui macchina sta cercando e i file e non posso riavviare in remoto la loro macchina.

Quando una condivisione di Windows ha un blocco, il processo di blocco è Sistema, quindi non credo di poterlo uccidere, come con i blocchi normali.

Qualcuno sa come rilasciare il blocco su una cartella condivisa senza riavviare la macchina?

È stato utile?

Soluzione 2

Trovato una soluzione.

  1. Trova il processo usando Processo Explorer :

    1. Scarica ed estrae procexp.exe
    2. In Process Explorer usa " Trova handle o DLL ... " comando da " Trova " Menu
    3. Immettere il nome della directory che sta riscontrando problemi nell'eliminazione
    4. Dovrebbe essere mostrato un elenco di file aperti che corrispondono a quel nome. Fai alcune ipotesi e scopri quale non riesce a essere eliminato. Se il file è bloccato da una condivisione di Windows, il processo che contiene il file sarà System
    5. Annota la directory che è stata lasciata aperta
  2. Scarica e installa Unlocker ( Avviso : collegamento rimosso, in quanto contiene malware)

    1. Installa Unlocker, disabilitando l'opzione per le estensioni di Explorer e altra posta indesiderata
  3. Sblocca la directory

    1. Apri una finestra cmd e vai a C: \ Programmi \ Unlocker
    2. Dalla finestra cmd, esegui Unlocker.exe " the-path-to-the-bloccato-folder "
    3. Apparirà una finestra di dialogo che conferma il rilascio del blocco. Utilizzare il pulsante di sblocco per sbloccare il file

Ora la directory dovrebbe essere sbloccata e ora può essere eliminata.

Altri suggerimenti

Se si è amministratori sul server che condividono il file in rete, è possibile utilizzare la funzionalità integrata di Windows:

  1. Avvia & # 8594; Risorse del computer & # 8594; Fai clic con il pulsante destro del mouse & # 8594; Gestisci ti porta al Computer Console di gestione
  2. Nel menu di navigazione sinistro, vai a Strumenti di sistema & # 8594; Cartelle condivise
  3. Puoi visualizzare Azioni, Sessioni e amp; Apri i file qui. Ciò ti consente di scoprire chi ha aperto quali file da quali workstation.
  4. Fai clic con il pulsante destro del mouse su un elemento nell'elenco per poter rimuovere il blocco file.

Spero che questo aiuti.

Prova Process Hacker: https://wj32.org/processhacker/

L'hacker di processo è come Process Explorer sugli steroidi.

Per trovare il processo offensivo, premi CTRL + F o fai clic su " Trova handle di DLL " pulsante e cerca il nome del file.

Una volta trovato il file nella finestra di dialogo Trova handle, puoi semplicemente fare clic con il pulsante destro del mouse sul file e scegliere " chiudi " ;. (almeno per v2.39.124)

Le versioni precedenti avevano un "terminatore" opzione nel menu contestuale del processo.  Fai clic destro sul processo offensivo - > Varie - > Terminator - > Seleziona tecniche di terminazione . Nota che alcuni sono forse pericolosi e possono avere conseguenze indesiderate.

Ho avuto problemi simili, e nessuno di questi suggerimenti che ho visto sopra sembrano adatti per build notturne automatizzate (come implicava il poster originale) perché richiedono tutti uno sforzo manuale per dare la caccia e uccidere i blocchi.

L'unico metodo che ho provato che sembra funzionare in modo affidabile è rimuovere la condivisione stessa, creare la build, quindi aggiungere nuovamente la condivisione. Ecco un modo per rimuovere automaticamente la condivisione:

D: \ Projects > net share Projects / DELETE / Y

Gli utenti hanno file aperti su Progetti. Continuando l'operazione, i file verranno chiusi.

I progetti sono stati eliminati correttamente.

(NOTA: la creazione automatica della condivisione può essere una seccatura se i gruppi di privilegi che devi assegnare sono disordinati.)

Il modo in cui lo faccio è utilizzando sia OpenFiles.exe che Handle.exe Puoi eseguirli in qualsiasi ordine e avrai la tua risorsa completamente sbloccata.

OpenFiles: per disconnettere le sessioni di condivisione file

Handle.exe: per rilasciare eventuali handle aperti (non tentare di chiudere gli handle appartenenti a pid4, poiché questo è il processo di sistema)

Puoi automatizzare questo tramite PowerShell, batch o qualsiasi lingua di tua scelta.

Un'altra opzione è, a partire da Windows Vista, utilizzare lo strumento Windows incorporato nel sistema:

monitora risorse: perfmon.exe / res

Estratto da: Http://www.sysadmit.com/2017/06/windows-how-to-know-that-process-has-open-a-file.html

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