我的名字来自巴西的Carlos Im.我试图打开这样的文件:
image1.picture.loadfromfile('\\ntmemo01\c$\ozzy2.bmp');
但它不起作用.我接受了例外
类EFOpenError,消息"无法打开文件'\ntmem01\c $\ozzy2.bmp'访问被拒绝."
谢谢,卡洛斯
你必须使用双反斜杠.
image1.picture.loadfromfile('\\ntmemo01\c$\ozzy2.bmp');
如果仍然出现异常,则无法从您的应用程序访问该文件.
您应该做的第一件事是确保您可以使用Windows资源管理器访问该文件.
只需在开始菜单(WinKey + R)的"运行"对话框中键入它,看看会发生什么.如果它不起作用,请先在那里工作,然后再返回到您的程序.
是否共享了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;
如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/