kklp 2023-01-11 17:29 采纳率: 40%
浏览 39
已结题

WNetAddConnection2问题

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

  • 写回答

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月21日
  • 已采纳回答 1月13日
  • 创建了问题 1月11日

悬赏问题

  • ¥15 软件供应链安全是跟可靠性有关还是跟安全性有关?
  • ¥15 电脑蓝屏logfilessrtsrttrail问题
  • ¥20 关于wordpress建站遇到的问题!(语言-php)(相关搜索:云服务器)
  • ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?
  • ¥15 Java+vue部署版本反编译
  • ¥100 对反编译和ai熟悉的开发者。
  • ¥15 带序列特征的多输出预测模型
  • ¥15 Python 如何安装 distutils模块
  • ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
  • ¥15 资源泄露软件闪退怎么解决?