WNetAddConnection2问题

WNetAddConnection2问题
exe使用管理员权限开打并运行WNetAddConnection2函数,打开资源管理器不显示盘符,驱动器;当我使用管理员cmd执行net use命令是可以看见WNetAddConnection2执行成功的,就是资源管理器不显示图标。
使用非管理员权限执行WNetAddConnection2,资源管理器中可以正常显示。
有没有人遇到过这样的问题,网络查了很多并没有什么好的解决办法。
都说不要使用管理员权限,但是程序中有其他地方需要管理员权限才能使用。

WNetAddConnection2是Windows API中的一个函数,它允许程序连接到远程共享资源。在你的情况中,你已经成功地使用了这个函数(根据您的说法,net use命令显示已成功),但是在资源管理器中没有显示驱动器图标.

这种情况可能是因为您在使用管理员权限运行程序时,资源管理器运行在不同的用户上下文中,因此您在程序中连接的共享资源不可见。

为了解决这个问题,您可以尝试在不使用管理员权限的情况下运行程序并调用WNetAddConnection2,或者,您可以使用Windows任务计划程序在启动时运行您的程序并在其中提供管理员凭据。
下面是一个简单的C++程序示例,它使用WNetAddConnection2函数连接到远程共享资源:

#include <Windows.h>
#include <Winnetwk.h>
#include <iostream>

using namespace std;

int main() {

    WCHAR remoteName[] = L"\\\\RemoteServer\\ShareName";
    WCHAR userName[] = L"Username";
    WCHAR password[] = L"Password";

    DWORD result;

    result = WNetAddConnection2(
        &NETRESOURCE { 0 },
        password,
        userName,
        0);

    if (result != NO_ERROR) {
        cout << "WNetAddConnection2 failed: " << result << endl;
    } else {
        cout << "Connection successful!" << endl;
    }
    return 0;
}

这里假设您要连接的远程共享的名称为“\RemoteServer\ShareName”,用户名为“Username”,密码为“Password”。当您运行这个程序时,如果连接成功,将会输出“Connection successful!”,否则会输出错误代码。

注意这里是一个仅提供示例,代码中很多地方可能需要根据实际情况进行修改。