Come posso rilevare le autorizzazioni di condivisione di un file aperto?


0

Quale software posso utilizzare per rilevare i dettagli di come viene aperto un file (in particolare le autorizzazioni per altri processi)?

Abbiamo due versioni del software di stampa delle carte: CardFive e Zebra Card Studio che ha acquisito CardFive e mantiene il loro vecchio software.

Entrambi aprono un file CSV per le istruzioni di stampa. La vecchia versione consente alle successive istanze del software di modificare tali istruzioni. La nuova versione no - si rifiuta di consentire qualsiasi modifica.

Sospetto che il problema sia con i privilegi di blocco dei file, cioè il vecchio software si apre con OF_SHARE_DENY_NONE (ReadWrite in .NET Enumerazione FileShare ), e che il nuovo software si apre con maggiori restrizioni sulle azioni.

Come posso sapere esattamente come un file di rete è bloccato? Ho provato a esaminare più istanze di entrambe le versioni dell'applicazione in Process Explorer, ma mostra solo quale processo ha un file aperto - non come è aperto: enter image description here

enter image description here

Sono consapevole del fatto che l'accesso simultaneo in scrittura può causare problemi di integrità dei dati. In questo caso specifico, non mi aspetto che questo sia un problema.

Risposte:


0

Il blocco dei file su Windows avviene su due livelli. Un programma può bloccare l'intero file ( CreateFile API) o una regione di esso ( LockFileEx API). L'API di Windows (Win32) non fornisce un modo standard per capire come è stato aperto un file. L'API NtQueryObject può fornire alcune informazioni su come il file è stato aperto, ma non include i requisiti di condivisione ed è un'API interna che potrebbe cambiare in qualsiasi momento.

Tuttavia, un'applicazione può approssimare la semantica di condivisione di un file aperto provando ad aprirla e controllando quando l'apertura fallisce a causa di un accesso negato. Tale programma proverebbe ad aprire un file per (1) nessun accesso, quindi (2) accedere alla lettura, quindi (3) scrivere l'accesso. Un'applicazione può quindi verificare se ci sono regioni del file che sono bloccate cercando di bloccarne le regioni.

Il problema con questo metodo è che potrebbe interferire con l'applicazione che sta utilizzando attivamente il file in questione e potrebbe comportare un errore.

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.