I'm using the Windows Shell API to access Network machines and their folders.
shellFolder.EnumObjects(hwnd, grfFlags, out enumIdList); .... int result = shellEnum.Next(celt, out itemPidl, out numFetched);
I'm using the
IShellFolder.EnumObjects() method, which works great and I can get a list of machines in my Network.
However, when I try to get folders from these networks, it works only when there is no need of authentication to the machine. If there is a need of authentication, the method returns
Windows File Explorer shows a prompt to "Enter Network Credentials" for these machines. How can I show the same prompt from my WPF program and continue based on user's credentials?
In most of the Shell API, a HWND handle can be passed, but it's optional, and it's also a way to say "disable UI".
This is the case for the IShellFolder::EnumObjects method
HRESULT EnumObjects(HWND hwnd, SHCONTF grfFlags, IEnumIDList **ppenumIDList);
hwnd parameter official documentation:
If user input is required to perform the enumeration, this window handle should be used by the enumeration object as the parent window to take user input. An example would be a dialog box to ask for a password or prompt the user to insert a CD or floppy disk. If hwndOwner is set to NULL, the enumerator should not post any messages, and if user input is required, it should silently fail.
User contributions licensed under CC BY-SA 3.0