Win32: API calls to list available network shares on a server?

Roddy picture Roddy · May 22, 2009 · Viewed 8.3k times · Source

Assume I have access to a SMB server at IP 1.2.3.4, how can I determine the list of available shares?

Windows Explorer can do it when I enter a UNC path \\1.2.3.4\ - but command prompt "dir \\1.2.3.4\" fails!

I've tried the usual FindFirstFile/FindNext calls - which I use successfully to read the files and directories on each share, but they don't work directly on the server root.

Ideally, I need something that works for XP onwards.

Edit: I want to do this programatically, rather than from command line. Redirecting and parsing the output from 'net view 1.2.3.4' would work, but I'm ideally looking for an API for this job.

Answer

ChrisW picture ChrisW · May 22, 2009

According to the docs there's a NetShareEnum and a WNetEnumResource function.