从C#访问远程目录我正在尝试从asp.net中的C#程序访问远程网络共享。我需要的是functiondownload(dirname){directory=(ThisisthepartIdon'tknowhowtodo)fordirindirectory:download(dir);对于目录中的文件:copyfile(file);我的问题是这个目录需要用户名和密码才能访问,我不知道如何提供它们。感谢您以任何方式提供帮助。使用这种类型的身份验证,而不仅仅是使用简单的文件操作://////表示网络连接以及对网络共享的身份验证。///publicclassNetworkConnection:IDisposable{#regionVariables//////目录的完整路径。///privatereadonlystring_networkName;#endregion#regionConstructors//////初始化类的新实例。/////////网络共享的完整路径。/////////连接到网络共享时使用的凭据。///publicNetworkConnection(stringnetworkName,NetworkCredentialcredentials){_networkName=networkName;varnetResource=newNetResource{Scope=ResourceScope.GlobalNetwork,ResourceType=ResourceType.Disk,DisplayType=ResourceDisplaytype.Share,RemoteName=networkName.TrimEnd('\')};varresult=WNetAddConnection2(netResource,credentials.Password,credentials.UserName,0);如果(结果!=0){抛出新的Win32Exception(结果);}}#endregion#regionEvents//////在处理此实例时发生。///公共事件EventHandlerDisposed;#endregion#region公共方法//////执行应用程序定义的与释放、释放或重置非托管资源相关的任务。///publicvoidDispose(){Dispose(true);GC.SuppressFinalize(这个);}#endregion#region受保护的方法//////执行应用程序定义的与释放、释放或重置非托管资源相关的任务。//////true释放托管和非托管资源;false仅释放非托管资源。protectedvirtualvoidDispose(booldisposing){if(disposing){varhandler=Disposed;如果(处理程序!=null)处理程序(这个,EventArgs.Empty);}WNetCancelConnection2(_networkName,0,true);}#endregion#region私有静态方法//////WNetAddConnection2函数建立到网络资源的连接。该函数可以将本地设备重定向到网络资源冲动。//////指定建议连接的详细信息的结构,例如有关网络资源、本地设备和网络资源提供者的信息。///连接到网络资源时使用的密码。///连接到网络资源时使用的用户名。///标志。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/aa385413%28VS.85%29.aspx。///[DllImport("mpr.dll")]privatestaticexternintWNetAddConnection2(NetResourcenetResource,stringpassword,stringusername,intflags);//////WNetCancelConnection2函数取消现有的网络连接。您还可以调用该函数来删除当前未连接的已记住网络连接。//////指定要断开连接的重定向本地设备或远程网络资源的名称。///连接类型。定义了以下值:///0:系统不更新信息有关连接的信息。如果连接在注册表中被标记为持久连接,则系统会在下次登录时继续恢复连接。如果连接未标记为持久连接,该函数将忽略CONNECT_UPDATE_PROFILE标志的设置。///CONNECT_UPDATE_PROFILE:系统使用连接不再是持久连接的信息更新用户配置文件。在后续的登录操作中,系统不会恢复此连接。(使用远程名称断开资源对持久连接没有影响。)//////指定如果连接上有打开的文件或作业,是否应该断开连接。如果此参数为FALSE,则如果有打开的文件或作业,该函数将失败。///[DllImport("mpr.dll")]privatestaticexternintWNetCancelConnection2(stringname,intflags,boolforce);#endregion//////完成类的实例。///允许尝试在被垃圾收集回收之前释放资源并执行其他清理操作。///~NetworkConnection(){处置(false);}}#regionWin32函数所需的对象#pragmawarningdisable1591//////网络资源。///[StructLayout(LayoutKind.Sequential)]publicclassNetResource{publicResourceScopeScope;公共资源类型资源类型;公共资源显示类型显示类型;publicint用法;公共字符串本地名称;公共字符串RemoteName;公共字符串注释;公共字符串提供者;}//////资源范围。///publicenumResourceScope{Connected=1,GlobalNetwork,Remembered,Recent,Context};//////资源类型。///publicenumResourceType{Any=0,Disk=1,Print=2,Reserved=8,}//////资源显示类型。///publicenumResourceDisplaytype{Generic=0x0,Domain=0x01,Server=0x02,Share=0x03,File=0x04,Group=0x05,Network=0x06,Root=0x07、Shareadmin=0x08,Directory=0x09,Tree=0x0a,Ndscontainer=0x0b}#pragmawarningrestore1591#endregionUsage:using(newNetworkConnection(_directoryPath,newNetworkCredential(_userName,_password))){File.Copy(localPath,_directoryPath);你需要模拟用户才能看到这个问题有效,你需要调用登录来创建一个Windows身份,可以用来访问文件系统这里有一些更令人震惊的关于这个话题上面是C#学习教程:AccessingRemotelyfromC#如果目录分享的全部内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
