Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Win32 C++ WNETAdAccess连接2有域名吗?_C++_Winapi_Fileshare - Fatal编程技术网

Win32 C++ WNETAdAccess连接2有域名吗?

Win32 C++ WNETAdAccess连接2有域名吗?,c++,winapi,fileshare,C++,Winapi,Fileshare,我正在一台机器上工作,当放置在客户站点时,该机器将处于kiosk模式。应用程序GUI将是用户与系统的唯一接口,当用户希望将文件复制到远程位置时,应用程序需要映射/取消映射共享文件夹。我使用WnetAdminConnection2进行映射,一旦用户离开“复制”对话框,我将使用WNetCancelConnection2取消映射。根据客户的需要,此计算机可以直接放置在拥有共享文件夹的域上,也可以放置在单独的域上。对于我们的测试,我们将机器放在一个没有DNS访问权限的域上,并且目标文件共享位于另一个域上

我正在一台机器上工作,当放置在客户站点时,该机器将处于kiosk模式。应用程序GUI将是用户与系统的唯一接口,当用户希望将文件复制到远程位置时,应用程序需要映射/取消映射共享文件夹。我使用WnetAdminConnection2进行映射,一旦用户离开“复制”对话框,我将使用WNetCancelConnection2取消映射。根据客户的需要,此计算机可以直接放置在拥有共享文件夹的域上,也可以放置在单独的域上。对于我们的测试,我们将机器放在一个没有DNS访问权限的域上,并且目标文件共享位于另一个域上的Active Directory服务器上。使用WNetAddConnection2,我可以提供用户名、密码和\\等路径,但无法获得连接,路径未找到。这是正确的,在这个域上没有DNS。然后我尝试了\\,我用这条路可以很好地到达那里

我的问题是,对WNetAddConnection2的调用和NETRESOURCE结构都没有用于传递域名的字段。NETRESOURCE结构中的username字段的格式是否与WNetAddConnection2相同?我没有看到任何文件来证明或反驳这种情况。我想确保这一点,因为使用目标系统的名称而不是IP地址,可能需要指定域。正如你可能已经从这个问题中注意到的,这不是我的主要专业领域。我一直在寻找答案,但还没有找到任何明确的答案。任何帮助都将不胜感激。

接受NETRESOURCE的lpRemoteName字段和lpUserName参数中的域名。将远程名称指定为\\server\resource或\\IPAddress\resource,并将用户名指定为domain\username格式

当然,您需要在C/C++中正确地转义反斜杠字符

略加修改的示例


您使用的名称与在netuse命令中使用的名称相同。如果该命令不起作用,那么您也无法在代码中使用它。由于没有名字提供者,它当然是行不通的。请访问serverfault.com进行跟进。太好了,谢谢。我也这么想,但没有看到任何支持我理论的东西。只是需要一些验证。这很有帮助。不要将标题更改为包含已解决的问题。如果有答案,请将其标记为已接受。如果没有,请自己创建一个答案,说明这是如何解决的,然后将其标记为已接受。我还原了您的编辑。在标题中添加[已解决]不是这里的工作方式。如果你有一个你想分享的解决方案,把它作为一个实际的答案加入,就像其他人在你的答案空间里一样。如果您想撤回问题,请将其删除。这样做的链接位于问题标签下方。
NETRESOURCE nr;
DWORD res;
TCHAR szUserName[32] = "MyDomain\\MyUserName",
    szPassword[32] = "MyPassword",
    szLocalName[32] = "Q:",
    szRemoteName[MAX_PATH] = "\\\\products2\\relsys";

nr.dwType = RESOURCETYPE_ANY;
nr.lpLocalName = szLocalName;
nr.lpRemoteName = szRemoteName;
nr.lpProvider = NULL;

res = WNetAddConnection2(&nr, szPassword, szUserName, FALSE);

if(res == NO_ERROR)
  printf("Connection added \n", szRemoteName);
else
  printf("Error: %ld\n", res);
  return;
}