【200分】如何使用指定的帐号访问局域网共享目录?(不要映射盘,不要模拟用户)

wjq 2009-09-11 06:47:51
比如在机器A上有共享目录Test,设置用户domain\c可以访问并修改。
在客户端,客户登录帐户是domain\d,对\\A\Test没有任何权限,现在需要C#实现指定用户domain\c来访问\\A\Test。

不使用映射盘WinAPI:WNetAddConnection2(由于连接时间较长,隐射的话,用户可以从资源管理器里直接访问隐射盘,这样就失去了设置权限的意义)
不使用模拟用户WinAPI:LogonUser(由于域服务器是Windows 2000,且客户端帐户没有SE_TCB_NAME权限,所有无法使用模拟用户方式)

谢谢。如果能解决,再加200分。谢谢。
...全文
1764 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
gehy1 2009-11-03
  • 打赏
  • 举报
回复
也遇到同样问题,关注中。。
Flyingdragon168 2009-09-14
  • 打赏
  • 举报
回复
都是高手,剛剛接觸C#,學習中。
angel6709 2009-09-14
  • 打赏
  • 举报
回复
服务器就是服务器,让他开个你需要的服务吧,如:FTP。
DogAndDot 2009-09-14
  • 打赏
  • 举报
回复
关注中
蒋晟 2009-09-14
  • 打赏
  • 举报
回复
那就用自己写一个服务,用另一个帐号运行,用来执行访问共享目录的操作
laoban108 2009-09-13
  • 打赏
  • 举报
回复
好帖啊
wjq 2009-09-12
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 jiangsheng 的回复:]
你可以CreateProcessAsUser或者impersonation用另一个身份进行文件操作……
[/Quote]我开贴就说了,由于与服务器是Win2K,且客户端用户帐号没有SE_TCB_NAME权限,所有不能用CreateProcessAsUser或者impersonation。
24K純帥 2009-09-12
  • 打赏
  • 举报
回复
太专业了,学习。。
dancingbit 2009-09-12
  • 打赏
  • 举报
回复
一个麻烦点的方法就是自己写个文件传送的服务端程序,放在服务器上运行,你的程序只需要连接到这个程序就可以向它发送命令,传送文件。这种做法甚至不需要在Windows中指定共享文件夹,可以自行由你在程序中设定,需要的,只是在服务器上运行程序的权限,和运行程序的帐户应该具备对相应文件夹的读权限。
hiauok 2009-09-12
  • 打赏
  • 举报
回复
不看清楚楼主的题,回答有点跑题了
hiauok 2009-09-12
  • 打赏
  • 举报
回复
为共享文件,加访问权限,指定用户用可以了
蒋晟 2009-09-12
  • 打赏
  • 举报
回复
你可以CreateProcessAsUser或者impersonation用另一个身份进行文件操作……
BATTLERxANGE 2009-09-12
  • 打赏
  • 举报
回复
修改注册表吧,大概可以把映射盘隐藏
柳晛 2009-09-12
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wjq 的回复:]
WebClient这个连file://的URI貌似有谱。不过要等周一去实际环境下试试。谢谢了~
[/Quote]

WebClient需要C/S啊。
wjq 2009-09-12
  • 打赏
  • 举报
回复
现在的问题在于,客户是银行。内部安全限制的很严格。
这也就是为什么为某文件夹开权限但只开给特定虚拟帐号,要使用该文件必须通过制定的软件访问。
而客户端是不允许任何注册表等操作的。额外开发文件共享程序当然也是不行的,不论是开放FTP服务还是做一个共享文件的server端都不行。现在就是客户说:服务端 我们就这么做了,客户端你们只要遵守我们的要求,怎么实现是你们的事。

所以目前的要求就是不额外增加服务器端程序,仅在客户端有限的权限下 实现进程内 对远程共享文件夹的访问(可能多个文件夹,且授权账户不同。)。实在不行就只能WNetAddConnection2不指定映射盘符了
CALLMEBALINGHOU 2009-09-12
  • 打赏
  • 举报
回复
VSS应该有这个功能吧
蒋晟 2009-09-12
  • 打赏
  • 举报
回复
用文件共享是有这个问题
怎么不用C/S?
wjq 2009-09-12
  • 打赏
  • 举报
回复
WebClient也不行,无法遍历文件夹获取文件~哎……
wjq 2009-09-12
  • 打赏
  • 举报
回复
WebClient这个连file://的URI貌似有谱。不过要等周一去实际环境下试试。谢谢了~
threenewbee 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wuyq11 的回复:]
public static void OpenDirectory(string str_Directory,string to_Directory, string str_UserName, string str_Password)
        {
            string str_LogoOn = "net use " + str_Directory + " /user:" + str_UserName + " \"" + str_Password + "\"";
            string str_OpenDirectory = "start " + str_Directory;

            Process p = new Process();
            p.StartInfo.RedirectStandardError = true;
            p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.CreateNoWindow = true;
            p.StartInfo.FileName = "cmd.exe";
            p.Start();
            p.StandardInput.WriteLine(str_LogoOn);
            p.StandardInput.WriteLine(str_OpenDirectory);
            p.StandardInput.WriteLine("exit");
            p.Close();
            p.Dispose();
            }
还可使用  WebClient实现相关文件操作
参考
         
[/Quote]
我说的WNetUseConnection就是Net Use的API版本。
加载更多回复(10)

111,120

社区成员

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

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

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