Delphi: открыть файл с другого компьютера - PullRequest
2 голосов
/ 03 марта 2009

меня зовут Карлос Им из Бразилии. Я пытаюсь открыть файл, как это:

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

но это не работает. Я получаю исключение

класс EFOpenError с сообщением «Не удается открыть файл» \ ntmemo01 \ c $ \ ozzy2.bmp 'Доступ запрещен. "

Спасибо, Carlos

Ответы [ 4 ]

15 голосов
/ 03 марта 2009

Вы должны использовать двойную обратную косую черту.

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

Если вы по-прежнему получаете исключение, файл недоступен из вашего приложения.

Первое, что вы должны сделать, это убедиться, что вы можете получить доступ к файлу с помощью проводника Windows.

Просто введите его в диалоговое окно «Пуск» меню «Пуск» (WinKey + R) и посмотрите, что произойдет. Если это не сработает, сначала сделайте так, чтобы оно работало , а затем вернитесь к программе.

6 голосов
/ 03 марта 2009

Совместно ли используется диск C: на ntmemo01? Если он не доступен, вы не можете получить к нему доступ. Если он используется совместно, но для доступа к нему требуется имя пользователя и пароль, доступ к нему будет другим. Вы можете привязать к нему букву диска, указав при этом имя пользователя и пароль:

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;
5 голосов
/ 03 марта 2009

Как указано DR , имя файла требует двойной обратной косой черты для UNC-пути

Сообщение об отказе в доступе указывает на то, что у вас нет разрешения на доступ к общей папке C $ на компьютере ntmemo01.

C $ a скрыто административный ресурс вы уверены, что текущая учетная запись пользователя имеет правильные разрешения? Сначала вам нужно проехать на карту, как подсказывает Кен Уайт

Общие административные ресурсы отключены по умолчанию в Windows Vista и Windows 7, если вы не присоединяетесь к домену. Вы можете включить их вручную следующим образом.

Нажмите на кнопку запуска и в поле поиска введите «regedit» и нажмите ввод.

Перейдите к HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System.

Добавьте новый DWORD с именем LocalAccountTokenFilterPolicy и присвойте ему значение 1 .

Перезагрузка и все готово!

Источник: http://www.paulspoerry.com/2007/05/09/how-to-access-administrative-shares-on-vista-c/

4 голосов
/ 03 марта 2009

когда вы копируете эту же строку в проводнике Windows, открывается ли файл? В противном случае это может быть проблема с правами, как предполагает ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...