如何在 Windows 10 中打开"Enter Network Credentials"



我正在使用Windows Shell API访问网络计算机及其文件夹。

shellFolder.EnumObjects(hwnd, grfFlags, out enumIdList);
....
int result = shellEnum.Next(celt, out itemPidl, out numFetched);

我使用的是IShellFolder.EnumObjects()方法,它非常有效,我可以获得网络中的机器列表。

但是,当我尝试从这些网络获取文件夹时,只有在不需要对机器进行身份验证的情况下,它才能工作。如果需要进行身份验证,则该方法返回0x80004005(E_FAIL(。

Windows文件资源管理器显示一个提示;输入网络凭据";对于这些机器。如何从我的WPF程序中显示相同的提示并根据用户的凭据继续?

在大多数Shell API中,可以传递HWND句柄,但这是可选的,也是一种表示"禁用UI";。

这是IShellFolder::EnumObjects方法的情况

HRESULT EnumObjects(HWND hwnd, SHCONTF grfFlags, IEnumIDList **ppenumIDList);

hwnd参数官方文档:

如果执行枚举需要用户输入,则此窗口句柄应被枚举对象用作父窗口以获取用户输入。一个例子是一个对话框,要求密码或提示用户插入CD或软盘。如果hwndOwner设置为NULL,则枚举器不应发布任何消息,如果需要用户输入,它应该会无声地失败。

相关内容

  • 没有找到相关文章

最新更新