到底什么方案是完美解决访问局域网文件的??!!!!!

pumaadamsjack 2012-09-20 09:36:34
有个windows服务,需要监控局域网中很多文件。(具体要访问的主机和文件在配置文件中随时更改)。
请问使用什么方法实现?

我使用了 ManagementScope 和 IO.fileinfo

Public Shared Function GetfileName(ByVal host As String, ByVal userName As String, ByVal passWord As String, ByVal filePath As String) As String

Dim conn As ConnectionOptions = New ConnectionOptions()
Dim ManagementPath As String = "\\" + host + "\root" & _
"\cimv2:LogicalDisk"
conn.Username = userName
conn.Password = passWord

Dim ms As ManagementScope = New ManagementScope(ManagementPath, conn)
ms.Connect()

Dim ff As FileInfo = New FileInfo(filePath)

Return String.Format(ff.LastAccessTime, "yyyy-MM-dd HH:mm:ss")


End Function


调用使用

Dim bbb As String = Win32DiskManager.GetfileName("192.168.0.1", "administrator", "wf1c5d", "\\192.168.0.1\E$\IIS_Log\W3SVC3000\ex120501.log")


但这样执行到

Dim ff As FileInfo = New FileInfo(filePath)
就会报用户名密码错


但如果在这个机器上,首先cmd 访问以下 \\192.168.0.1 就可以过去了

说明还是有文件访问的权限没开通。但如果这个服务器重启了,就必须再访问以下 \\192.168.0.1

否则用一个新的IP地址,肯定还会出这种问题。


求一个完美解决方案。
...全文
276 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
用登陆映射法,cmd命令执行。如果只能这样就这样做,否则建议使用其他传输方法。
更好的构架是使用一个服务器扫描和分发文件。
以下是cmd代码:


public class ClassConnWin
{
public string path { get; set; }
public string user { get; set; }
public string pass { get; set; }
public string linkFile()
{
if (path != "" && user != "" && pass != "")
{
System.Diagnostics.Process process = new System.Diagnostics.Process();//创建进程对象
System.Diagnostics.ProcessStartInfo startinfo = new System.Diagnostics.ProcessStartInfo();//创建进程时使用的一组值,如下面的属性
startinfo.FileName = "cmd.exe";//设定需要执行的命令程序
//以下是隐藏cmd窗口的方法
startinfo.Arguments = "/c" + @"Net Use " + path + " " + pass + " /user:" + user;//设定参数,要输入到命令程序的字符,其中"/c"表示执行完命令后马上退出
startinfo.UseShellExecute = false; //不使用系统外壳程序启动
startinfo.RedirectStandardInput = false;//不重定向输入
startinfo.RedirectStandardOutput = true;//重定向输出,而不是默认的显示在dos控制台上
startinfo.CreateNoWindow = true; //不创建窗口
process.StartInfo = startinfo;
string output = "";
try
{
if (process.Start()) //开始进程
{
process.WaitForExit();
output = process.StandardOutput.ReadToEnd();//读取进程的输出
}
}
catch (Exception e)
{
return e.ToString();
//Console.WriteLine(e.ToString());
}
finally
{
if (process != null)
{
process.Close();
}
}
return path;
}
else
{
return "路径、用户名或密码错误";
}
}
public void KillLink()
{
System.Diagnostics.Process process = new System.Diagnostics.Process();//创建进程对象
System.Diagnostics.ProcessStartInfo startinfo = new System.Diagnostics.ProcessStartInfo();//创建进程时使用的一组值,如下面的属性
startinfo.FileName = "cmd.exe";//设定需要执行的命令程序
//以下是隐藏cmd窗口的方法
startinfo.Arguments = "/c" + @"Net Use /delete * /yes";//设定参数,要输入到命令程序的字符,其中"/c"表示执行完命令后马上退出
startinfo.UseShellExecute = false; //不使用系统外壳程序启动
startinfo.RedirectStandardInput = false;//不重定向输入
startinfo.RedirectStandardOutput = true;//重定向输出,而不是默认的显示在dos控制台上
startinfo.CreateNoWindow = true; //不创建窗口
process.StartInfo = startinfo;
string output = "";
try
{
if (process.Start()) //开始进程
{
process.WaitForExit();
output = process.StandardOutput.ReadToEnd();//读取进程的输出
}
}
catch (Exception e)
{
//Console.WriteLine(e.ToString());
}
finally
{
if (process != null)
{
process.Close();
}
}
}
}

bdmh 2012-09-20
  • 打赏
  • 举报
回复
局域网访问必须先登录到那台机器,你不如做一个socket的cs结构系统
admin (Remote Administrator)是一款屡获殊荣的远程控制软件,它将远程控制、外包服务组件、以及网络监控结合到一个系统里,提供目前为止最快速、强健而安全的工具包。 首先说说这款软件的利: Radmin(Remote Administrator)是一款屡获殊荣的安全远程控制软件,Radmin帮助您在远程电脑上工作,如同您坐在那台电脑前一样。Radmin软件是理想的远程访问解决方案。您可以从多个地点访问同一台电脑,并使用高级文件传输、远程关机、Telnet、操作系统集成的 NT 安全性系统支持,以及其它功能。Radmin在速度、可靠性及安全性 方面的表现超过了所有其它远程控制软件! 再说说它的弊端: 如果落在不怀好意的人手中,或许会干出谁都不知道的勾当哦,嘿嘿, 其实,有时候我们在一个局域网中,被人下载搞死,开个网页半天都搞不出来,之前我推荐过一款局域网查看软件,我们如果在局域网电脑上都安装上被控制端的话,那么我们就可以窥见究竟是哪些人在搞鬼,因为他的一举一动在你的电脑桌面上清清楚楚,而且关键是这款软件不会被报毒! Radmin重要功能 远程控制 远程查看 文件传输 文字与语音聊天 通过对 Intel AMT 技术的支持,远程打开、重启动、访问远程 PC 的 BIOS 设置 新功能! 通过因特网或 LAN 工作 通过使用方便的界面,您可以只需进行几次点击,完成安装和设置Radmin。 完美支持Windows 7系统

111,092

社区成员

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

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

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