서버 네트워크 공유에서 어떤 컴퓨터가 파일을 열었는지 확인

서버 네트워크 공유에서 어떤 컴퓨터가 파일을 열었는지 확인

Windows Server 2008이 있고 폴더를 공유합니다. 많은 클라이언트가 해당 폴더와 상속 파일에 액세스합니다. 한 클라이언트는 rw 모드로 산발적으로 하나의 dll 파일을 열므로 그 후에는 다른 클라이언트가 dll을 로드할 수 없습니다.

이제 어떤 클라이언트가 이를 수행하는지 확인하고 싶습니다. 내가 찾은 모든 도구:

  • 파일 열기
  • 그물
  • 쉐어워치
  • NetShare모니터

rw 모드에서 파일을 여는 네트워크 클라이언트가 표시되지 않습니다.

바이러스 백신 프로그램인 것 같은데 어느 클라이언트에서 파일을 열었는지 알아야 합니다.

편집하다:

  • 클라이언트는 Windows 시스템입니다.
  • 모든 클라이언트는 동일한 사용자를 사용하므로 사용자 이름으로 클라이언트를 확인할 수 없습니다.

답변1

이것은 당신에게 유용할 수 있습니다:

여기에 이미지 설명을 입력하세요

WinServer 에디션에서 같은 위치인지 확신할 수 없지만 + X-> Computer Management-> System Tools-> Shared Folders-> 를 통해 액세스했습니다.Open Files

여기에는 열려 있는 각 파일 핸들, 해당 "열기 모드"(읽기/읽기쓰기) 및 사용자가 나열됩니다. 이 위치에서 파일 핸들을 닫을 수도 있습니다.

답변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

관련 정보