当前位置:  开发笔记 > 开发工具 > 正文

Delphi:从另一台计算机打开一个文件

如何解决《Delphi:从另一台计算机打开一个文件》经验,为你挑选了3个好方法。

我的名字来自巴西的Carlos Im.我试图打开这样的文件:

image1.picture.loadfromfile('\\ntmemo01\c$\ozzy2.bmp');

但它不起作用.我接受了例外

类EFOpenError,消息"无法打开文件'\ntmem01\c $\ozzy2.bmp'访问被拒绝."

谢谢,卡洛斯



1> Daniel Rikow..:

你必须使用双反斜杠.

image1.picture.loadfromfile('\\ntmemo01\c$\ozzy2.bmp');

如果仍然出现异常,则无法从您的应用程序访问该文件.

您应该做的第一件事是确保您可以使用Windows资源管理器访问该文件.

只需在开始菜单(WinKey + R)的"运行"对话框中键入它,看看会发生什么.如果它不起作用,请先在那里工作,然后再返回到您的程序.



2> Ken White..:

是否共享了ntmemo01上的C:驱动器?如果未共享,则无法访问它.如果它已共享但需要用户名和密码才能访问,则必须以不同方式访问它.您可以将驱动器号映射到它,在此过程中提供用户名和密码:

const
  RemoteName = '\\ntmemo01\C$';
  UserName = 'yourusername';
  Password = 'yourpassword';

function MapNetworkDrive: Boolean;
var
  NetRes: TNetResource;
  Res: DWord;
begin
  Result := True;
  FillChar(NetRes, SizeOf(TNetResource), 0);
  NetRes.dwType := RESOURCETYPE_DISK;
  NetRes.lpRemoteName := PChar(RemoteName);
  NetRes.lpLocalName := 'H:';   // Whatever drive letter you want
  Res := WNetAddConnection2(NetRes, PChar(Password), PChar(UserName), 0);
  Result := (Res = NO_ERROR);
end;

之后取消映射:

function UnMapNetworkDrive: Boolean;
var
  Res: DWord;
begin
  Res := WNetCancelConnection2(PChar('H:'), 0, True); // same drive letter as above
  Result := (Res + NO_ERROR);
end;



3> stukelly..:

如DR所述,文件名需要UNC路径的双反斜杠

拒绝访问消息表明您无权访问ntmemo01计算机上的C $共享.

C $ a是隐藏的管理共享您确定当前用户帐户具有正确的权限吗?正如肯·怀特所建议的那样,你首先要在地图上找到一个驱动器

默认情况下,在Windows Vista和Windows 7中禁用Administrive共享,除非您加入域.您可以按如下方式手动启用它们.

单击开始按钮,然后在搜索框中键入"regedit"并按Enter键.

浏览到HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System.

添加一个名为LocalAccountTokenFilterPolicy的新DWORD,并为其赋值1.

重启并完成!

资料来源:http://www.paulspoerry.com/2007/05/09/how-to-access-administrative-shares-on-vista-c/

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有