averiguar qué computadora ha abierto un archivo en el recurso compartido de red de servidores

averiguar qué computadora ha abierto un archivo en el recurso compartido de red de servidores

Tengo un Windows Server 2008 y comparte una carpeta. Muchos clientes acceden a esa carpeta y heredan los archivos. Un cliente abre un archivo dll esporádicamente con el modo rw, por lo que ningún otro cliente puede cargar el dll.

Ahora quiero determinar qué cliente lo hace. Todas las herramientas que encontré:

  • abrir documento
  • neto
  • compartirwatch
  • NetShareMonitor

no me muestra el cliente de red que abre el archivo en modo rw.

Creo que es el programa antivirus, pero necesito saber qué cliente tiene el archivo abierto.

Editar:

  • Los clientes son máquinas con Windows.
  • Todos los clientes usan el mismo usuario, por lo que no puedo determinar el cliente con el nombre de usuario.

Respuesta1

Esto puede serte útil:

ingrese la descripción de la imagen aquí

No puedo estar seguro de que sea la misma ubicación en la edición Server, pero accedí a ella a través de Win+ X-> Computer Management-> System Tools-> Shared Folders->Open Files

Esto enumera cada identificador de archivo abierto, su "Modo abierto" (lectura/lectura y escritura) y el usuario. También puede cerrar el identificador del archivo desde esta ubicación.

Respuesta2

¡Llevamos años queriendo hacer esto!

Hoy vimos esta utilidad:

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

¡Fantástico!

Editar:

Puede utilizar NetworkOpenedFiles de Nirsoft para determinar qué host tiene un archivo abierto en un recurso compartido de archivos de Windows.

Respuesta3

Esta es una vieja pregunta, pero sin embargo:

Si tiene PowerShell 4.0+ (que no viene con Windows Server 2008, tendría que actualizar su versión de PowerShell), puede usar esto:

Directamente en el servidor:

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

desde una máquina remota:

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

Get-SmbOpenfiledevuelve una lista de todos los archivos abiertos en el servidor, que filtramos para where-objectver solo los que estamos buscando.

Esto devolverá, entre otras cosas, ClientComputerNamecuál es la IP del ordenador que ha abierto el archivo.

A continuación se muestra un resultado de ejemplo:

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

Si luego desea ver rápidamente cuál es el nombre de host de la dirección IP devuelta, use:

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

información relacionada