WNetGetUniversalName を呼び出す一部のコードに奇妙な問題があります。関数を呼び出すと、常にエラー 67 (ERROR_BAD_NET_NAME) が発生します。しかし、ネットワーク接続は実際に存在します。
だから最初から。指定したネットワーク ドライブにあるテキスト ファイルを処理する Windows シェル拡張機能を作成しています。したがって、IShellExtInit::Initialize メソッドが呼び出されると、ドラッグしたファイルを保存し、WNetGetUniversalName メソッドを使用して接続名を取得します。
したがって、ネットワーク ドライブが存在することは確かです (DragQueryFile メソッドに由来するため)。
ここにいくつかのコードがあります:
char buffer[4096];
REMOTE_NAME_INFO *info = (REMOTE_NAME_INFO*)buffer;
DWORD length = 4096;
info->lpConnectionName = NULL;
info->lpRemainingPath = NULL;
info->lpUniversalName = NULL;
DWORD error = WNetGetUniversalName(file, REMOTE_NAME_INFO_LEVEL, info, &length);
file は DragQueryFile メソッドに由来する ATL::CString であり、エラーは常に 67です。
奇妙なことに、数日前には機能していましたが、もう機能していません。投稿されたコードは変更していません。