QUOTE(Fernando Maia @ 14/01/2012 - 21:22)

Um aplicativo de terceiro, está abrindo o arquivo em modo exclusivo. Eu preciso abrir o arquivo ao mesmo tempo (como leitura).
Até este momento, voce não tinha dito que era um aplicativo de terceiro...
QUOTE
Teoricamente eu não poderia abrir, mais sempre existe uma maneira de "driblar" esse controle que o S.O. impõe sobre o arquivo.
Neste caso não tem. Do contrário a integridade do próprio SO estaria comprometida.
Na verdade, até tem. Mas para isto voce teria que "matar" o processo que "
lockou" o arquivo e, provavelmente, voce não vai querer fazer isto.
Se o aplicativo não fosse de terceiro, então voce poderia modificar o código daquele aplicativo para permitir a leitura e negar apenas a escrita para outros aplicativos.
- quando o arquivo está bloqueado por uma chamada à
CreateFile, definindo o parâmetro
dwShareMode com
FILE_SHARE_READ em oposição ao valor 0;
- ou usando no parâmetro
uStyle com
OF_SHARE_DENY_WRITE em oposição à
OF_SHARE_EXCLUSIVE, quando está bloqueado por uma chamada à
OpenFile.
Se voce ainda tiver dúuvidas sobre sobre estas questões, poderá dar uma olhada na documentação no
msdn:
File Management FunctionsApenas destacando uma observação a respeito da Criação e Abertura de arquivos:
QUOTE
Creating and Opening FilesAn application also uses CreateFile to specify whether it wants to share the file for reading, writing, both, or neither. This is known as the sharing mode. An open file that is not shared (dwShareMode set to zero) cannot be opened again, either by the application that opened it or by another application, until its handle has been closed. This is also referred to as exclusive access. Resumindo...
Quando um arquivo é aberto em modo exclusivo, até mesmo a aplicação que o abriu não poderá abrí-lo (criar um novo handle) sem que antes o tenha fechado.
Abraços
* Se houver problema com o idioma inglês é só colar os links no tradutor do Google (não é perfeito, mas ajuda)