Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Работа с сетевыми дисками под Widows 8 и старше / 12 сообщений из 12, страница 1 из 1
17.07.2018, 17:11
    #39675182
Сергей из Самары
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с сетевыми дисками под Widows 8 и старше
Помогите решить проблему, пожалуйста.
Была написана программа, которая считывала файлы из сети. Предварительно нужно было указать каталог для них. Происходило это предельно просто:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
if SelectDirectory(s,[sdAllowCreate,sdPerformCreate],0)
          then
           begin
             Dm.DirPack.Edit;
             Dm.DirPack.FieldByName('VALUE_STR').AsString:= s;
             Dm.DirPack.Post;
           end;
         end;


После считывания каталога он записывался в базу и откуда считывался по мере необходимости. До вин 7 все работало отлично. Но в 8 столкнулся с проблемой, что данный вызов немедленно выдает ошибку I/O error 123. Переделка вызова SelectDirectory('Выбор','',s) помогла решить проблему, но возникла другая - программа не видит сетевых дисков. Совсем. И при попытке вызова пишет файл не найден. Вбитый в адресную строку тот же путь показывает, что все находится на своем месте и все видится. Все пути, ведущие на сеть, становятся из программы недоступны. Под виндой 7 все так же успешно продолжает работать.

Это какая-то система безопасности винды не дает ничего сделать или код программы нужно переписывать???
...
Рейтинг: 0 / 0
17.07.2018, 17:14
    #39675183
Сергей из Самары
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с сетевыми дисками под Widows 8 и старше
И да, пробовал указывать разные пути, через IP или имени компа. Бесполезно. Продолжает писать, что файл не найден.
...
Рейтинг: 0 / 0
17.07.2018, 17:22
    #39675184
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с сетевыми дисками под Widows 8 и старше
Сергей из Самары,

Тут была тема по поводу соединения с сетевыми ресурсами - поищи по WNetAddConnection2 и WNetConnectionDialog...
...
Рейтинг: 0 / 0
17.07.2018, 17:25
    #39675186
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с сетевыми дисками под Widows 8 и старше
Сергей из СамарыВбитый в адресную строку тот же путь

Ты уверен, что это тот же путь и что программа работает под той же учёткой, что и
командная строка?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
17.07.2018, 17:25
    #39675188
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с сетевыми дисками под Widows 8 и старше
SMB 3.0
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
17.07.2018, 18:25
    #39675217
Alexander Zuev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с сетевыми дисками под Widows 8 и старше
Dimitry Sibiryakov,
Небось от имени администратора
...
Рейтинг: 0 / 0
17.07.2018, 19:03
    #39675239
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с сетевыми дисками под Widows 8 и старше
Сергей из Самары,

попробуй эту функцию (из загашника):
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
function BrowseDir( hOwner: HWND; out SResultDir: STring; const STitle: String = 'Выберите директорию'; const SDefaultDir: String = '' ): Boolean;
var
  lpbi: TBROWSEINFO;
  il: PItemIDList;
  Buffer: Array[0..MAX_PATH] of Char;
begin
  Result := False;
  FillChar( lpbi, sizeof( lpbi ), 0 );
  lpbi.hwndOwner := hOwner;
  lpbi.lpszTitle := LPSTR( STitle );
  lpbi.ulFlags := BIF_RETURNONLYFSDIRS;
  lpbi.pszDisplayName := StrAlloc(MAX_PATH);
  if SDefaultDir <> '' then begin
    lpbi.lParam := LPARAM( PChar( SDefaultDir ) );
    lpbi.lpfn := @BrowseCallbackProc;
  end;

  il := SHBrowseForFolder( lpbi );
  if Assigned( il ) then begin
    if ShGetPathFromIDList( il, @Buffer ) then begin
      SResultDir := String( Buffer );
      Result := True;
    end;
  end;
end;


Понадобится подключить модуль ShlObj

Использование:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
procedure TForm1.Button1Click(Sender: TObject);
var
  S: String;
begin
  if BrowseDir( Handle, S, 'select dir', 'D:\Downloads' ) then
    Caption := S;
end;

...
Рейтинг: 0 / 0
17.07.2018, 19:05
    #39675240
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с сетевыми дисками под Widows 8 и старше
забыл, BrowseDir использует эту ф-цию:
Код: pascal
1.
2.
3.
4.
5.
6.
function BrowseCallbackProc(hWindow: HWND; uMsg: Cardinal; lParam, lpData: Integer): Integer; stdcall;
begin
  Result := 0;
  if uMsg = BFFM_INITIALIZED then
    SendMessage(hWindow, BFFM_SETSELECTION, 1, lpData);
end;

...
Рейтинг: 0 / 0
17.07.2018, 19:35
    #39675250
Сергей из Самары
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с сетевыми дисками под Widows 8 и старше
Dimitry Sibiryakov,

Программа, естествено, запускалась от имени администратора, иначе она не видит oci.dll
Но получается, что тут она не видит сеть и файлов там.

YuRock,
Спасибо, гляну. Но SelectDirectory работает, если использовать его не в виде вин 3.1. Проблема в том, что программа не видит файлы, лежащие в сети.
...
Рейтинг: 0 / 0
17.07.2018, 20:05
    #39675254
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с сетевыми дисками под Widows 8 и старше
Сергей из СамарыПрограмма, естествено, запускалась от имени администратора, иначе она не видит oci.dll

"Чо?" (с)

Сергей из СамарыНо получается, что тут она не видит сеть и файлов там.

И это вполне логично, поскольку запуск, фактически, от другого пользователя приводит от
совсем другим подключенным дискам.
https://tweaks.com/windows/39133/make-mapped-network-drives-work-with-uac-elevated-apps/
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
17.07.2018, 20:09
    #39675256
Сергей из Самары
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с сетевыми дисками под Widows 8 и старше
Dimitry Sibiryakov,

Ну вот так. При обычном запуске писала "Cannot initialized oci.dll". Хотя клиента ораклового ставил под этим пользователем.

А по подключениям я уже понял, но не понял пока, как решить данную проблему. Пока присматриваюсь к WNetAddConnection2, но еще не сообразил, как это можно использовать в моем случае.
...
Рейтинг: 0 / 0
17.07.2018, 21:03
    #39675266
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с сетевыми дисками под Widows 8 и старше
Сергей из СамарыНу вот так. При обычном запуске писала "Cannot initialized oci.dll"

Process Monitor в руки и смотреть чего ей не хватает. Вероятно, пары записей в реестре
типа ORA_HOME, поскольку установка происходила с повышенными правами.

Сергей из СамарыПока присматриваюсь к WNetAddConnection2, но еще не сообразил, как
это можно использовать в моем случае.
Забей. Не это твоя проблема. Не привыкай к костылям.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Работа с сетевыми дисками под Widows 8 и старше / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]