2012-06-24 74 views
4

我在使用API​​方法WNetAddConnection2在Windows XP下映射网络驱动器(WebDAV)时出现问题。在Windows 7下,它就像一个魅力。我的代码:映射网络驱动器(WebDAV)不适用于Windows XP

function ConnectDrive(Drive: string; Folder: string; 
Username: string; Password: string; RestoreAtLogon: Boolean): HRESULT; 

var 
    NetResource: TNetResource; 
    dwFlags: DWORD; 
begin 
    with NetResource do 
    begin 
    dwType := RESOURCETYPE_DISK; 
    lpLocalName := PChar(Drive); 
    lpRemoteName := PChar(Folder); 
    lpProvider := nil; 
    end; 

    if (RestoreAtLogon) then 
    dwFlags := CONNECT_UPDATE_PROFILE 
    else 
    dwFlags := 0; 

    Result := WNetAddConnection2(NetResource, PChar(Password), 
    PChar(Username), dwFlags); 
end; 

每次我尝试到Windows连接告诉我:“网络名称无法找到”或者“网络路径找不到”

正如我之前所说的,在Windows 7下有没问题。

如果我使用商业工具,如NetDrive的,这个程序有没有问题,安装在XP,Vista或Windows的驱动器7

有没有人的想法?

在此先感谢

+0

我在Windows XP(家庭版和专业版)机器上测试了您的代码,并且它将网络驱动器映射为它应该的状态(该函数返回0)。你能举一个例子说明你如何调用这个函数吗? – Chris

+0

我以这种方式调用函数: hr:= ConnectDrive(“M:”,“http:// myserver/WebDAV”, “testuser1”,“password”,false); –

+3

尝试用''\\ myserver \ WebDAV''代替(如果路径是本地的) – Chris

回答

1

有可能是你的问题,无数的理由...但是你可以尝试:

  • 最重要的事情:完全修补你的Windows安装(Windows更新 - 最新SP &更新)。你可以用,可以被固定(webdav-redirector-list
  • 错误拼确保您能够解决WebDAV服务器的名称(您使用的NetBIOS(WINS),DNS,主机文件?)
  • 指定FQDN
  • 指定IP地址
  • 尝试使用http://servernamehttpS(if supported),而不是UNC(\\servername
  • 尝试使用NET USE命令,看它是否与映射(Mapping WebDAV folder as a network drive letter
  • 检查在IIS级别的身份验证配置成功(Mapping a WebDav network drive
  • 检查这些workarrounds:[email protected]
  • 使用网络嗅探器来捕获和失败中分析网络流量(Wireshark的,网络监视器等)

希望这有助于!