descubra qual computador abriu um arquivo no compartilhamento de rede dos servidores

descubra qual computador abriu um arquivo no compartilhamento de rede dos servidores

Eu tenho um Windows Server 2008 e ele compartilha uma pasta. Muitos clientes acessam essa pasta e herdam os arquivos. Um cliente abre um arquivo dll esporadicamente com o modo rw, então depois disso nenhum outro cliente pode carregar a dll.

Agora quero determinar qual cliente faz isso. Todas as ferramentas que encontrei:

  • abrir arquivo
  • líquido
  • compartilhar assistir
  • Monitor NetShare

não me mostra o cliente de rede que abre o arquivo no modo rw.

Acho que é o programa antivírus, mas preciso saber qual cliente está com o arquivo aberto.

Editar:

  • Os clientes são máquinas Windows
  • Todos os clientes usam o mesmo usuário, então não consigo determinar o cliente com o nome de usuário

Responder1

Isso pode ser útil para você:

insira a descrição da imagem aqui

Não tenho certeza se é o mesmo local na edição Server, mas acessei através de Win+ X-> Computer Management-> System Tools-> Shared Folders->Open Files

Isso lista cada identificador de arquivo aberto, seu "modo aberto" (leitura/leitura) e o usuário. Você também pode fechar o identificador de arquivo neste local.

Responder2

Há anos que queríamos fazer isso!

Hoje vimos este utilitário:

https://www.nirsoft.net/utils/network_opened_files.html

Fantástico!

Editar:

Você pode usar NetworkOpenedFiles da Nirsoft para determinar qual host tem um arquivo aberto em um compartilhamento de arquivos do Windows.

Responder3

Esta é uma questão antiga, mas mesmo assim:

se você tiver o PowerShell 4.0+ (que não vem com o Windows Server 2008, você teria que atualizar sua versão do PowerShell), você poderia usar isto:

Diretamente no servidor:

Get-SmbOpenFile | where-object { $_.Path -like 'C:\foo\bar\*' }

de uma RemoteMachine:

$cim = New-CimSession ServerName -Credential (get-credential)
Get-SmbOpenFile -CimSession $cim | where-object { $_.Path -like 'C:\foo\bar\*' }

Get-SmbOpenfileretorna uma lista de todos os arquivos abertos no servidor, que filtramos para where-objectver apenas aqueles que procuramos.

Isso retornará, entre outras coisas, ClientComputerNamequal é o IP do computador que abriu o arquivo.

Aqui está um exemplo de saída:

PS C:\WINDOWS\system32> get-smbopenfile -cimsession $cim | where-object { $_.Path -like 'D:\Daten\Transfer\*' }

    FileId       SessionId    Path                 ShareRelativePath ClientComputerName ClientUserName PSComputerName
    ------       ---------    ----                 ----------------- ------------------ -------------- --------------
    347355680805 348160786757 D:\Daten\TRANSFER\xy TRANSFER\xy       10.0.0.114         INTERNAL\xy    Server

Se você quiser ver rapidamente qual é o nome do host do endereço IP retornado, use:

[Net.DNS]::GetHostByAddress("10.0.0.114") | select -expand HostName

informação relacionada