访问同一局域网内的其他电脑内文件的问题

ggbkhs 2006-11-06 05:16:23
目前如果文件在本地的话已经调通。即
private void InitRecList()
{
string RecPath = "D:\\recRoutine" + @"\";
DirectoryInfo di = new DirectoryInfo(RecPath);
if (di.Exists)
{
FileSystemInfo[] dirs = di.GetFileSystemInfos("*.rec");
foreach (FileSystemInfo diNext in dirs)
{
RecList.Items.Add(diNext.Name);
}
}
}
但是我想访问同一局域网内文件夹不知道如何改。反正直接将RecPath改为RecPath= "\\192.168.1.135\\D:\\recRoutine" + @"\"; 是不行的.谢谢,我是初学者最好说具体点。
...全文
1031 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuanzhihua520 2007-02-27
  • 打赏
  • 举报
回复
up
shilei831115 2006-11-24
  • 打赏
  • 举报
回复
收藏
zhaochong12 2006-11-14
  • 打赏
  • 举报
回复
印记
FollowIT 2006-11-08
  • 打赏
  • 举报
回复
类似问题,mark
ggbkhs 2006-11-07
  • 打赏
  • 举报
回复
感谢lovefootball,也谢谢其他朋友帮助。net use的确有用。但是仍然好想知道如何用愚翁专栏的方法。
lovefootball 2006-11-07
  • 打赏
  • 举报
回复
可以用net use
public bool Connect(string remoteHost, string userName, string passWord)
{
bool Flag = true;
Process proc = new Process();
try
{
proc.StartInfo.FileName = "cmd.exe";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardInput = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.CreateNoWindow = false;
proc.Start();
string dosLine = @"net use \\" + remoteHost + " " + passWord + " " + " /user:" + userName + ">NUL";
proc.StandardInput.WriteLine(dosLine);
proc.StandardInput.WriteLine("exit");
while (proc.HasExited == false)
{
proc.WaitForExit(1000);
}
string errormsg = proc.StandardError.ReadToEnd();
if (errormsg != "")
{
Flag = false;
}
proc.StandardError.Close();
}
catch (Exception ex)
{
Flag = false;
}
finally
{
try
{
proc.Close();
proc.Dispose();
}
catch
{
}
}
return Flag;
}

if (Connect("10.XX.XX.XX", "用户名", "密码"))
{
File.Copy(@"\\10.XX.XX.XX\共享目录\111.txt", @"e:\\111.txt", true);
}
ggbkhs 2006-11-07
  • 打赏
  • 举报
回复
我参考了愚翁专栏,仍然访问不了。我修改后的代码如下,请各位大哥帮忙指正
//声明
using System.Runtime.InteropServices;
[DllImport("mpr.dll", EntryPoint="WNetAddConnection2")]
public static extern uint WNetAddConnection2(
[In] NETRESOURCE lpNetResource,
string lpPassword,
string lpUsername,
uint dwFlags);
[DllImport("Mpr.dll")]
public static extern uint WNetCancelConnection2(
string lpName,
uint dwFlags,
bool fForce);
[StructLayout(LayoutKind.Sequential)]
public class NETRESOURCE
{
public int dwScope;
public int dwType;
public int dwDisplayType;
public int dwUsage;
public string LocalName;
public string RemoteName;
public string Comment;
public string Provider;

}



//网络映射
NETRESOURCE myNetResource = new NETRESOURCE();
myNetResource.dwScope = 2; //2:RESOURCE_GLOBALNET
myNetResource.dwType = 1; //1:RESOURCETYPE_ANY
myNetResource.dwDisplayType = 3; //3:RESOURCEDISPLAYTYPE_GENERIC
myNetResource.dwUsage = 1; //1: RESOURCEUSAGE_CONNECTABLE
myNetResource.LocalName = "\\192.168.1.135\\D:";
myNetResource.RemoteName = "E:"; ;
myNetResource.Provider = null;
uint nret = WNetAddConnection2(myNetResource, "", "Administrator", 0);

string RecPath = "E:\\recRoutine" + @"\";
DirectoryInfo di = new DirectoryInfo(RecPath);
if (di.Exists)
{
FileSystemInfo[] dirs = di.GetFileSystemInfos("*.rec");
foreach (FileSystemInfo diNext in dirs)
{
RecList.Items.Add(diNext.Name);
}
}
ggbkhs 2006-11-07
  • 打赏
  • 举报
回复
@"\\192.168.1.135\D$\recRoutine\..."直接用该语句的话,如果135为本地IP,还可以访问到,但是如果135是局域网内的其他IP地址的话,仍然访问不到该路径下文件夹。现在我再试试dllzhangln兄的方法。
仔仔爸 2006-11-07
  • 打赏
  • 举报
回复
@"\\192.168.1.135\D$\recRoutine\..."
dlzhangln 2006-11-06
  • 打赏
  • 举报
回复
Declare Function WNetAddConnection Lib "mpr.dll" Alias "WNetAddConnectionA" (ByVal lpszNetPath As String, ByVal lpszPassword As String, ByVal lpszLocalName As String) As Long
dlzhangln 2006-11-06
  • 打赏
  • 举报
回复
WNetAddConnection("\\172.20.151.148\F", "qu", "Z:")
lovvver 2006-11-06
  • 打赏
  • 举报
回复
参见愚翁专栏:
http://blog.csdn.net/knight94/archive/2006/03/21/631309.aspx
http://blog.csdn.net/knight94/archive/2006/03/31/645367.aspx
仔仔爸 2006-11-06
  • 打赏
  • 举报
回复
"\\192.168.1.135\D$\recRoutine\..."

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧