繁体   English   中英

在C#中读取隐藏的份额

[英]Reading hidden share in C#

所以我有一个小的C#应用​​程序需要定期检查网络上多台机器上的目录内容。 我以为我只能读取\\ hostname \\ C $作为目录路径,但是使用普通的Directory类似乎没有办法对其他服务器进行身份验证,因此您可以访问隐藏的共享。 我确信有一个简单的方法可以做到这一点,我忽略了,但此刻我有点难过。

来自http://bytes.com/forum/thread689145.html

所有进程都在登录用户帐户的上下文中运行。 如果要在另一台计算机上打开文件,则应用程序必须在具有在该计算机上打开文件的权限的用户的上下文中运行。 您可以使用模拟执行此操作。

最简单的方法似乎是为当前用户提供其他计算机上的适当权限。

要使用运行该进程的用户没有权限的共享进行身份验证(通常是管理共享的情况),请尝试运行net use命令:

net use SERVERNAME\IPC$ /user:USERNAME PASSWORD

尝试在实际尝试访问共享的代码之前在单独的进程中运行它,例如:

ProcessStartInfo psi = new ProcessStartInfo(
    "net", "use " + SERVERNAME + @"\IPC$ /user:" + USERNAME + " " + PASSWORD);
Process p = new Process();
p.StartInfo = psi;
p.Start();
p.WaitForExit();
p.Close();
// The code to access the share follows...

如果不适合为运行该进程的用户帐户授予共享权限,这是非常有用的,例如,对于最终用户应用程序需要访问用户本身不应该直接访问的共享上的数据的安全模型。

您是否在寻找在运行时设置当前用户的方法?

如果没有,只要运行该进程的用户可以访问这些计算机,这将适用于您:

DirectoryInfo di = new DirectoryInfo(@"\\machineName\c$\temp");

FileInfo[] files = di.GetFiles();

foreach (FileInfo f in files)
{
    Debug.WriteLine(f.Name);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM