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!”,否则会输出错误代码。
注意这里是一个仅提供示例,代码中很多地方可能需要根据实际情况进行修改。