VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1028|回复: 4

如此实现与内网的一台机建立IPC$连接?

[复制链接]

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-3-19 11:30:01 | 显示全部楼层 |阅读模式
如题...
如何实现呢?希望牛人可以给出代码....
谢谢先~!
回复

使用道具 举报

2

主题

7

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-8-6 14:30:01 | 显示全部楼层
可以这样:
WinExec('command.com /c net use \\192.168.0.1\ipc$ 123456 /user:administrator ',SW_SHOW);

回复

使用道具 举报

0

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-8-6 15:15:02 | 显示全部楼层
上面的可以简化为:
WinExec('net use \\192.168.0.1\ipc$ 123456 /user:administrator ',SW_SHOW);

只有内部命令才需要调用command.com或cmd.exe
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-8-8 04:00:01 | 显示全部楼层
晕,如何实现不需要第三方工具的?
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-8 08:00:01 | 显示全部楼层
//建立远程连接 xPath: 远程路径  xNetUser/xNetPassword: 可以指定用户名及密码
function AddNetConnection(xPath, xNetUser, xNetPassword: string): string;
var
  mNetSource: TNetResource;
  mNetUser, mNetPassword: PChar;
  mErrorCode: Cardinal;
begin
  Result := '';
  if Copy(xPath, 1, 2) <> '\\' then Exit; //非远程方式,退出

  try
    with mNetSource do
    begin
      dwScope := RESOURCE_GLOBALNET;
      dwType := RESOURCETYPE_ANY;
      dwDisplayType := RESOURCEDISPLAYTYPE_SHARE;
      dwUsage := RESOURCEUSAGE_CONNECTABLE;
      lpLocalName := nil; //这里可以指定本地驱动器名,则将xPath映射为本地驱动器,传nil,只与xPath建立远程连接
      lpRemoteName := LPTSTR(xPath);
      lpComment := nil;
      lpProvider := nil;
    end;
    if xNetUser <> '' then
    begin
      mNetUser := LPTSTR(xNetUser);
      mNetPassword := LPTSTR(xNetPassword);
    end
    else
    begin
      mNetUser := nil;
      mNetPassword := nil;
    end;

    mErrorCode := WNetAddConnection2(mNetSource, mNetPassword, mNetUser, CONNECT_UPDATE_PROFILE);
    if mErrorCode <> NO_ERROR then //映射失败
      Result := Format('与 %s 建立网络连接时发生错误! 错误信息: %s', [xPath, SysErrorMessage(mErrorCode)]);
  except
    on E: Exception do
      Result := Format('与 %s 建立网络连接时发生错误! 错误信息: %s', [xPath, E.Message]);
  end;
end;

//mPath如果传入远程路径,则断开与远程路径的网络连接
//mPath如果传入本地驱动器名,则断开本地驱动器
function CancelNetConnection(xPath: string): string;
var
  mErrorCode: Cardinal;
begin
  Result := '';
  if Copy(xPath, 1, 2) <> '\\' then Exit; //非远程方式,退出

  try
    mErrorCode := WNetCancelConnection2(LPTSTR(xPath), CONNECT_UPDATE_PROFILE, True);
    if mErrorCode = NO_ERROR then
      Result := Format('与 %s 断开网络连接时发生错误! 错误信息: %s', [xPath, SysErrorMessage(mErrorCode)]);
  except
    on E: Exception do
      Result := Format('与 %s 断开网络连接时发生错误! 错误信息: %s', [xPath, E.Message]);
  end;
end;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表