2014-09-08 2 views
1

vb6에서 공유 폴더와 공유 드라이브를 구별하고 싶습니다.공유는 드라이브 또는 폴더입니다.

PC1의 D의 경우 : \가 공유 이름 myshare 후 공유 폴더로 공유

그리고 PC1에서

경우 D : 공유 이름 myshareddrive 다음은 공유 드라이브와 공유 myfiles \.

나는 입력이 \\pc1\\myshare amd \\pc1\\myshareddrive과 같이 될 것임을 의미합니다. 그래서 지금 그들은 공유 foder 또는 공유 드라이브 여부를 찾을 수 없습니다.

답변

4

Windows 파일 공유에 사용되는 SMB 프로토콜을 사용한다고 가정하면 프로토콜이 원격 경로 이름을 전달하지 않으므로이 방법을 구현할 수있는 휴대용 방법이 없습니다. 일반적으로 이러한 기능을 사용하지 않으며 공격 대상자에게 잠재적으로 유용한 정보를 제공 할 수 있습니다.

Windows에 있고 관리 액세스 권한이있는 경우 WMI를 통해 원격 경로 이름을 쿼리 할 수 ​​있습니다. 원격 경로 이름은 인증을 통해 원격으로 액세스 할 수 있습니다.

윈도우 XP 이후의 모든 Windows 플랫폼에서 사용할 수있는 wmic.exe의 출력을 구문 분석하는 것이 작업을 수행하는 가장 간단한 방법 (related superuser.com question) (제외 홈 에디션.)에 따라 출력을 생성한다

wmic /node:pc1 share where "name like 'myshare'" get path 

의 라인 :

Path 
D:\myfiles 

이 (다른 프로그램을 실행하지 않고) VB6에서이 작업 하려면, 당신은 WMI를 쿼리하는 COM을 사용해야합니다

Dim results As Object 
results = GetObject("winmgmts:\\pc1").ExecQuery("SELECT * FROM Win32_Share WHERE Name LIKE ""myshare""") 

Dim pathName As String 

If Len(results) > 0 Then 
    pathName = results(0).Path 
Else 
    ' Throw exception instead? Could not find the share. 
    pathName = "" 
End If 

인증 (원격 사용 등)이나 오류 검사를 처리하지 않았습니다.

면책 조항 : 위의 코드와 동일한 VBScript 만 테스트했으며 그 자체는 테스트하지 않았습니다.

관련 문제