2009-07-02 10 views
1

Ich versuche, eine Liste der Aktien auf einer bestimmten Maschine zu bekommen. Also entschied ich mich, die Windows-API NetApi32.dll zu verwenden. Hier ist mein Code-Schnipsel:Kann mir jemand mit der Windows API NetApi32 helfen?

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) 

ich einen Return-Code von 1231 bekommen, kann aber nicht scheinen zu finden, was das entspricht. Kann mir jemand in die richtige Richtung zeigen, wie man das macht, wenn es falsch ist?

+0

Haben Sie versucht, einen Weg zu untersuchen Ihr Problem mit .NET Framework-Konstrukten zu lösen, anstatt Pinvoke? –

+0

Ja, die meisten Lösungen weisen auf P/Invoke ... Ich habe eine harte Zeit für eine reine .NET Weise suchen hatte. Aber was meine Recherchen bringen, gibt es nicht. Wie ich bereits erwähnt habe, würde ich gerne wissen, wenn es einen besseren Weg gibt, dies zu tun. – Nurvx

Antwort

0

Sind Sie sicher, dass Ihre NetShareEnum Definition gültig? Ich bin nicht sehr vertraut mit VB.NET, aber ich habe in der Vergangenheit mit netapi32 in C# gearbeitet, und im Allgemeinen ohne Probleme.

Aber wie auch immer, wenn Sie alle Aktien auf Ihrem Computer aufzuzählen möchten, können Sie es eine andere Art und Weise tun. In dem folgenden Registrierungsschlüssel können Sie alle aktuellen Computer-Aktien finden:

HKLM \ System \ CurrentControlSet \ Services \ LanmanServer \ Shares

Es ist ein Schlüssel-Wert-Paar pro Aktie. Der Wert ist der Typ REG_MULTI_SZ, der wie ein einfaches Ini aussieht. Suchen Sie nach "type = 0" (Dateifreigabe) und lesen Sie den Pfad.

Verwandte Themen