2009-07-02 2 views
1

특정 컴퓨터에서 공유 목록을 가져 오려고합니다. 그래서 Windows API NetApi32.dll을 사용하기로 결정했습니다. 다음은 제 코드입니다.누구나 Windows API NetApi32를 도울 수 있습니까?

Dim svr As String = Environment.MachineName 
Dim level As Integer = 2 
Dim sharesRead As Integer, totalEntries As Integer, nRet As Integer, hResume As Integer = 0 
Dim pBuffer As IntPtr = IntPtr.Zero 

nRet = NetApi32.NetShareEnum(svr, level, pBuffer, -1, sharesRead, totalEntries, hResume) 

1231의 리턴 코드가 표시되지만, 그 코드가 무엇인지 찾아 낼 수 없습니다. 그것은 부정확 한 방법으로 이것을 할 수있는 방법에 대한 올바른 방향으로 누군가 나를 가리킬 수 있습니까?

+0

Pinvoke를 사용하는 대신 .NET Framework 구문을 사용하여 문제를 해결하는 방법을 조사해 보셨습니까? –

+0

그래, 대부분의 솔루션은 P/Invoke를 가리 킵니다. 순수한 .NET 방식을 찾기가 어려웠습니다. 그러나 내 수색이 가져온 것에서부터 그렇지 않습니다. 내가 언급 한 것처럼, 이것을 수행하는 더 좋은 방법이 있다면, 나는 알고 싶다. – Nurvx

답변

0

NetShareEnum 정의가 유효합니까? 나는 VB.NET에 익숙하지 않다. 그러나 나는 과거에 C#에서 netapi32를 사용하여 일반적으로 문제없이 일했다.

그러나 어쨌든 컴퓨터의 모든 공유를 열거하려면 다른 방법으로 할 수 있습니다. 다음 레지스트리 키에서 당신은 현재의 모든 컴퓨터 공유를 찾을 수 있습니다

HKLM \ 시스템 \ CURRENTCONTROLSET \ 서비스 \ LanmanServer를 공유 \

주 당 하나의 키 - 값 쌍이 있습니다. 값은 간단한 ini처럼 보이는 REG_MULTI_SZ 유형입니다. "type = 0"(파일 공유) 및 읽기 경로를 확인하십시오.