![서버 네트워크 공유에서 어떤 컴퓨터가 파일을 열었는지 확인](https://rvso.com/image/1482464/%EC%84%9C%EB%B2%84%20%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%20%EA%B3%B5%EC%9C%A0%EC%97%90%EC%84%9C%20%EC%96%B4%EB%96%A4%20%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B0%80%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%97%B4%EC%97%88%EB%8A%94%EC%A7%80%20%ED%99%95%EC%9D%B8.png)
Windows Server 2008이 있고 폴더를 공유합니다. 많은 클라이언트가 해당 폴더와 상속 파일에 액세스합니다. 한 클라이언트는 rw 모드로 산발적으로 하나의 dll 파일을 열므로 그 후에는 다른 클라이언트가 dll을 로드할 수 없습니다.
이제 어떤 클라이언트가 이를 수행하는지 확인하고 싶습니다. 내가 찾은 모든 도구:
- 파일 열기
- 그물
- 쉐어워치
- NetShare모니터
rw 모드에서 파일을 여는 네트워크 클라이언트가 표시되지 않습니다.
바이러스 백신 프로그램인 것 같은데 어느 클라이언트에서 파일을 열었는지 알아야 합니다.
편집하다:
- 클라이언트는 Windows 시스템입니다.
- 모든 클라이언트는 동일한 사용자를 사용하므로 사용자 이름으로 클라이언트를 확인할 수 없습니다.
답변1
답변2
우리는 수년간 이것을 하고 싶었습니다!
오늘 우리는 이 유틸리티를 발견했습니다:
https://www.nirsoft.net/utils/network_opened_files.html
환상적입니다!
편집하다:
Nirsoft의 NetworkOpenedFiles를 사용하여 Windows 파일 공유에 열린 파일이 있는 호스트를 확인할 수 있습니다.
답변3
이것은 오래된 질문이지만 그럼에도 불구하고:
PowerShell 4.0+(Windows Server 2008에는 제공되지 않음, PowerShell 버전을 업데이트해야 함)가 있는 경우 다음을 사용할 수 있습니다.
서버에서 직접:
Get-SmbOpenFile | where-object { $_.Path -like 'C:\foo\bar\*' }
RemoteMachine에서:
$cim = New-CimSession ServerName -Credential (get-credential)
Get-SmbOpenFile -CimSession $cim | where-object { $_.Path -like 'C:\foo\bar\*' }
Get-SmbOpenfile
서버에 열려 있는 모든 파일의 목록을 반환하며, 이를 통해 where-object
찾고 있는 파일만 볼 수 있습니다.
이는 무엇보다도 ClientComputerName
파일을 연 컴퓨터의 IP를 반환합니다.
다음은 출력 예입니다.
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
그런 다음 반환된 IP 주소의 호스트 이름이 무엇인지 빠르게 확인하려면 다음을 사용하세요.
[Net.DNS]::GetHostByAddress("10.0.0.114") | select -expand HostName