2009-07-02 12 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 \ Servicesの\のLanmanServer \共有

株につき1つのキーと値のペアがあります。値は単純なiniのように見えるREG_MULTI_SZ型です。 「type = 0」(ファイル共有)と読み取りパスを確認します。

関連する問題