C# 访问服务器上面的文件

allen0118 2011-04-15 09:43:12
System.Diagnostics.Process.Start(@"\\192.168.1.1\AAA", "admin", "123456789");

这个Start 方法还有一个参数叫做“启动进程时需要使用的域”,不知道到底该传入什么参数?

我的目的是通过用C#来从服务器上面复制一个文件下来,但是那个文件夹需要用户名和密码才能访问,我想在复制文件之前执行一句代码登陆一下,不知道是不是使用 System.Diagnostics.Process.Start() 来实现?

最好给点代码,在线等。。。
...全文
630 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
allen0118 2011-05-20
  • 打赏
  • 举报
回复
dang13579:如果共享的话就可以直接复制过去吧.
///<summary>
///???????????
///</summary>
///<param name="sourceDir">????</param>
///<param name="targetDir">????</param>
///<param name="overWrite">???true,??????,?????</param>
///<param name="copySubDir">???true,????,?????</param>
public static void CopyFiles(string sourceDir, string targetDir, bool overWrite, bool copySubDir)
{
//????????
foreach (string sourceFileName in Directory.GetFiles(sourceDir))
{
string targetFileName = Path.Combine(targetDir, sourceFileName.Substring(sourceFileName.LastIndexOf("\\") + 1));
if (File.Exists(targetFileName))
{
if (overWrite == true)
{
File.SetAttributes(targetFileName, FileAttributes.Normal);
File.Copy(sourceFileName, targetFileName, overWrite);
}
}
else
{
File.Copy(sourceFileName, targetFileName, overWrite);
}
}
//?????
if (copySubDir)
{
foreach (string sourceSubDir in Directory.GetDirectories(sourceDir))
{
string targetSubDir = Path.Combine(targetDir, sourceSubDir.Substring(sourceSubDir.LastIndexOf("\\") + 1));
if (!Directory.Exists(targetSubDir))
Directory.CreateDirectory(targetSubDir);
CopyFiles(sourceSubDir, targetSubDir, overWrite, true);
}
}
}
donal努力 2011-05-19
  • 打赏
  • 举报
回复
大家也帮帮我呀,我要做的是把一个服务器的文件拷贝到另一个服务器中
allen0118 2011-04-15
  • 打赏
  • 举报
回复
不是嫌麻烦阿,是那篇文章好像很难看懂一样,
ycproc 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 chenpeng0118 的回复:]

回复1楼:
有没有别的思路可以实现阿?

CSDN 上面有人说以下 代码可以登陆:System.Diagnostics.Process.Start(@"net use \\192.168.1.11\d$ 12345 /user:administrator");


但是我试了也不行 ,郁闷中。。。
[/Quote]

又嫌麻烦 。 有能做到这步的能力。 不知道你想做什么
allen0118 2011-04-15
  • 打赏
  • 举报
回复
好,说的有道理。感谢
  • 打赏
  • 举报
回复
楼上是怕麻烦吗?你如果真的把连接中的代码看懂,对asp.net安全性方面会加深理解。不要只想实现功能就好了,最重要的是要加深理解,这样功力才会提高
allen0118 2011-04-15
  • 打赏
  • 举报
回复
回复1楼:
有没有别的思路可以实现阿?

CSDN 上面有人说以下 代码可以登陆:System.Diagnostics.Process.Start(@"net use \\192.168.1.11\d$ 12345 /user:administrator");


但是我试了也不行 ,郁闷中。。。
  • 打赏
  • 举报
回复
使用windows api 来实现impersonate用户,代码比较长,可参考下面的:

http://blog.csdn.net/zmwgfh/archive/2007/11/07/1871846.aspx

不过这个代码有个问题,就是调用RevertToSelf()时,有可能回不到原来的用户,而是回到IIS上的应用池的用户。解决方法是调用前先保存好原用户的token,然后再用这个token来impersonate回去:


IntPtr oldToken = System.Security.Principal.WindowsIdentity.GetCurrent().Token;
//在RevertToSelf()之后,执行下面的代码:
ImpersonateLoggedOnUser(oldToken);


这样就可以保证回到原来的用户

110,538

社区成员

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

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

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