如何在 win2k service 中登陆另外一台机器?

coocoocooee 2003-02-21 07:14:48
我在win2000上做一个service程序,该service程序有个功能就是把本机上的文件

复制到局域网中的另外一台机器(可以是win2000或linux),且我知道这另外一台机

器的用户名和密码。 请问各位是否能用这已知的用户名和密码,在service中登陆到

该机器,并将文件复制过去,该如何做?

另外请问service程序是不是有什么权限设置。因为我碰到以下这个问题:当我在

本机登陆时用的用户名和密码与这另外一台机器上的用户名和密码相同时,在一个一

般的控制台程序中直接使用CopyFile(LPCTSTR localFileName, LPCTSTR remoteNewFileName, BOOL bFailIfExists);可以将本机文件直接复制到对方机器,

但是当我将该代码用在service中,却得到拒绝访问的错误,请问该如何解决?谢谢!
...全文
52 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
coocoocooee 2003-02-24
我的问题解决了。我用特定帐号而不是localsystem,再使用WNetAddConnection2就成功了。
不过还是谢谢ydaye和masterz(MS MVP)了。
回复
coocoocooee 2003-02-23
LsaLogonUser???
这函数的参数好复杂啊:(
回复
ydaye 2003-02-22
service是system权限,可以在本机上干任何事,它的权限不随任何登陆用户的权限而改变。

NetUseAdd之后就可以CopyFile,NetUseAdd就像用"net use \\RemoteMachine\c$ password /user:username"命令一样,之后你就可以用CopyFile做类似于"copy a.dat \\RemoteMachine\c$"的事情了。

以上方法依赖于对方机器是nt系统并打开Remote Procedure Call服务,不然就得用c/s了。
回复
载舟之水 2003-02-22
RAPI
回复
masterz 2003-02-22
try LsaLogonUser
HOWTO: Call LsaLogonUser to Obtain Primary Level Access Tokens
Q137578

and the following is also useful
http://www.winnetmag.com/Articles/Index.cfm?ArticleID=8943

回复
ydaye 2003-02-22
呵呵,爱莫能助,在权限方面,service好像没什么可以设的参数。
回复
coocoocooee 2003-02-22
ydaye, 我的意思是在一般的程序中使用函数WNetAddConnection2可以建立连接,但是把它移到service中就不行了,不知道是不是service中有什么参数没设置对?

回复
icelight 2003-02-21
mark
回复
相关推荐
发帖
网络编程
创建于2007-09-28

1.8w+

社区成员

VC/MFC 网络编程
申请成为版主
帖子事件
创建了帖子
2003-02-21 07:14
社区公告
暂无公告