WNetAddConnection2问题
exe使用管理员权限开打并运行WNetAddConnection2函数,打开资源管理器不显示盘符,驱动器;当我使用管理员cmd执行net use命令是可以看见WNetAddConnection2执行成功的,就是资源管理器不显示图标。
使用非管理员权限执行WNetAddConnection2,资源管理器中可以正常显示。
有没有人遇到过这样的问题,网络查了很多并没有什么好的解决办法。
都说不要使用管理员权限,但是程序中有其他地方需要管理员权限才能使用。
WNetAddConnection2问题
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
m0_54204465 2023-01-11 18:03关注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!”,否则会输出错误代码。
注意这里是一个仅提供示例,代码中很多地方可能需要根据实际情况进行修改。
本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 1无用