如何在 Windows 10 中打开 "Enter Network Credentials"
How to open "Enter Network Credentials" in Windows 10
我正在使用 Windows Shell API 访问网络机器及其文件夹。
shellFolder.EnumObjects(hwnd, grfFlags, out enumIdList);
....
int result = shellEnum.Next(celt, out itemPidl, out numFetched);
我正在使用 IShellFolder.EnumObjects()
方法,效果很好,我可以获得网络中的机器列表。
但是,当我尝试从这些网络获取文件夹时,只有在不需要对机器进行身份验证时它才有效。如果需要认证,方法returns 0x80004005
(E_FAIL
).
Windows 文件资源管理器会提示这些计算机“输入网络凭据”。如何从我的 WPF 程序中显示相同的提示并根据用户的凭据继续?
在大多数ShellAPI中,可以传递一个HWND句柄,但它是可选的,也是一种表示“禁用UI”的方式。
IShellFolder::EnumObjects method
就是这种情况
HRESULT EnumObjects(HWND hwnd, SHCONTF grfFlags, IEnumIDList **ppenumIDList);
hwnd参数官方文档:
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.
我正在使用 Windows Shell API 访问网络机器及其文件夹。
shellFolder.EnumObjects(hwnd, grfFlags, out enumIdList);
....
int result = shellEnum.Next(celt, out itemPidl, out numFetched);
我正在使用 IShellFolder.EnumObjects()
方法,效果很好,我可以获得网络中的机器列表。
但是,当我尝试从这些网络获取文件夹时,只有在不需要对机器进行身份验证时它才有效。如果需要认证,方法returns 0x80004005
(E_FAIL
).
Windows 文件资源管理器会提示这些计算机“输入网络凭据”。如何从我的 WPF 程序中显示相同的提示并根据用户的凭据继续?
在大多数ShellAPI中,可以传递一个HWND句柄,但它是可选的,也是一种表示“禁用UI”的方式。
IShellFolder::EnumObjects method
就是这种情况HRESULT EnumObjects(HWND hwnd, SHCONTF grfFlags, IEnumIDList **ppenumIDList);
hwnd参数官方文档:
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.