![averiguar qué computadora ha abierto un archivo en el recurso compartido de red de servidores](https://rvso.com/image/1482464/averiguar%20qu%C3%A9%20computadora%20ha%20abierto%20un%20archivo%20en%20el%20recurso%20compartido%20de%20red%20de%20servidores.png)
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:
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-SmbOpenfile
devuelve una lista de todos los archivos abiertos en el servidor, que filtramos para where-object
ver solo los que estamos buscando.
Esto devolverá, entre otras cosas, ClientComputerName
cuá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