Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.30;
Скачать: CL | DM;

Вниз

Копирование файла по сети   Найти похожие ветки 

 
Bora.ru   (2007-08-28 19:15) [0]

данная программа по замыслу должна запускаться на удаленном компе и скопировать файл на мой комп в папку Shared, в которой установлен полный доступ.
вот весь код:
var
  sourcefile,destfile:pchar;
begin
sourcefile:="d:\file.rar";
destfile:="\\MyComp\Shared\file.rar";
CopyFile(sourcefile,destfile,false);
end.

Запускаю эту прогу на том компе, но безрезультатно. Хотя с моего компа в его расшаренную папку ф-ция CopyFile копирует без проблем. А также если копировать тот файл в какую-нибудь папку на его компе, то также работает. Но а вот по сети, блин, не хочет.
Что здесь не так?


 
Reindeer Moss Eater ©   (2007-08-28 21:20) [1]

GetlastErroor знает, что здесь не так.


 
Bora.ru   (2007-08-29 00:27) [2]


> Reindeer Moss Eater ©  

это че функция такая? а как ее использовать?


 
grisme ©   (2007-08-29 02:22) [3]

F1 тебе подскажет, что за функция такая


 
Reindeer Moss Eater ©   (2007-08-29 10:27) [4]

Как использовать? Как и все остальные.
Вызывать и смотреть на возвращаемый результат.


 
Bora.ru   (2007-08-29 23:36) [5]

GetLastError выдает результат - 5. В справке я не нашел, какая ошибка имеет такой код.


 
Германн ©   (2007-08-30 01:26) [6]


> Bora.ru   (29.08.07 23:36) [5]
>
> GetLastError выдает результат - 5. В справке я не нашел,
>  какая ошибка имеет такой код.
>

FormatMessage тебе поможет перевести DWORD в LPTSTR.
:-)


 
Reindeer Moss Eater ©   (2007-08-30 09:48) [7]

Доступ запрещен.


 
Bora.ru   (2007-08-30 11:27) [8]


> Reindeer Moss Eater ©   (30.08.07 09:48) [7]
> Доступ запрещен.

Доступ запрещен к файлу-источнику или к папке, куда копируется файл?


 
iXT ©   (2007-08-30 11:31) [9]

> [8] Bora.ru   (30.08.07 11:27)

Попробуй сделать эту операцию средствами не своей прогаммы


 
Reindeer Moss Eater ©   (2007-08-30 11:37) [10]

Доступ запрещен к файлу-источнику или к папке, куда копируется файл?

А самому-то не догадаться попробовать сначала открыть источник, потом создать файл назначения?


 
Bora.ru   (2007-08-30 11:39) [11]


> Германн ©   (30.08.07 01:26) [6]
> FormatMessage тебе поможет перевести DWORD в LPTSTR.

SysErrorMessage проще


 
Bora.ru   (2007-08-30 15:11) [12]

код выполняется безошибочно, но что странно - безрезультатно.


 
Anatoly Podgoretsky ©   (2007-08-30 15:14) [13]

Откуда знаешь, нет же никакой обработки ошибок.


 
Bora.ru   (2007-08-30 15:50) [14]


> Anatoly Podgoretsky ©   (30.08.07 15:14) [13]

обработчик есть, я его просто позже добавил.


 
Reindeer Moss Eater ©   (2007-08-30 15:51) [15]

код выполняется безошибочно, но что странно - безрезультатно.

это оптический обман.


 
Anatoly Podgoretsky ©   (2007-08-30 15:52) [16]


> обработчик есть, я его просто позже добавил.

У тебя обработчик ошибочный


 
Bora.ru   (2007-08-30 16:31) [17]

var
 sourcefile,destfile:pchar;
 f:textfile;
 e:word;
 s:string;
begin
try
 sourcefile:="d:\file.rar";  
 destfile:="\\MyComp\Shared\file.rar";
 CopyFile(sourcefile,destfile,false);
 assignfile(f,"error.txt");
 rewrite(f);
 write(f,"no errors");
 closefile(f);
except
e:=getlasterror;
s:=SysErrorMessage(e);
assignfile(f,"error.txt");
rewrite(f);
write(f,s);
closefile(f);
end;
end.

в результате - текстовый файл содержит строку "no errors", но файл не скопирован.


 
Reindeer Moss Eater ©   (2007-08-30 16:37) [18]

У тебя ошибка в программе


 
Reindeer Moss Eater ©   (2007-08-30 16:39) [19]

Функции винапи бесполезно обертывать в try except они не генерируют исключений.


 
Сергей М. ©   (2007-08-30 16:45) [20]


> Bora.ru


Ну ты и клоун)


 
Anatoly Podgoretsky ©   (2007-08-30 16:46) [21]

Не видать обработчика


 
Riply ©   (2007-08-30 18:26) [22]

>[19] Reindeer Moss Eater ©   (30.08.07 16:39)
>Функции винапи бесполезно обертывать в try except они не генерируют исключений.
А на чем основано это утверждение ?


 
Reindeer Moss Eater ©   (2007-08-30 18:31) [23]

А ты попробуй и фальсифицируй это утверждение.
:)


 
Reindeer Moss Eater ©   (2007-08-30 18:33) [24]

Винапи написано для всех.
В том числе для тех, кто пользуется языками и компиляторами в которых нет поддержки исключительных ситуаций.


 
Riply ©   (2007-08-30 18:41) [25]

> [23] Reindeer Moss Eater ©   (30.08.07 18:31)
>А ты попробуй и фальсифицируй это утверждение.
Я бы попробовала привести контпример, но не знаю как отличить API функцию от не API.
Beep - это API ?


 
Reindeer Moss Eater ©   (2007-08-30 18:43) [26]

Это Sysutils

procedure Beep;
begin
 MessageBeep(0);
end;

А вот это уже Win API

function MessageBeep; external user32 name "MessageBeep";


 
Reindeer Moss Eater ©   (2007-08-30 18:47) [27]

.... И там все, как и должно быть у нормальных людей:

If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.


И никаких генераций исключений


 
Anatoly Podgoretsky ©   (2007-08-30 19:22) [28]

> Riply  (30.08.2007 18:41:25)  [25]

Нет, это просто имя, а вот Windows.Beep это АПИ


 
Bora.ru   (2007-08-30 19:31) [29]

Иными словами ошибка всетаки при CopyFile. Но почему же тогда программа не завершает работу на этом месте?


 
Riply ©   (2007-08-30 19:41) [30]

>[27] Reindeer Moss Eater ©   (30.08.07 18:47)
>.... И там все, как и должно быть у нормальных людей:
С тем, что некоторые API генерят исключения под дебугером, все согласны ?
Вот меня и интересует: может есть и такие, которые сгенерят и в "нормальных" условиях ?


 
Leonid Troyanovsky ©   (2007-08-30 19:48) [31]


> Riply ©   (30.08.07 19:41) [30]

> С тем, что некоторые API генерят исключения под дебугером,
>  все согласны ?

Под некоторым дебугером? :)

--
Regards, LVT.


 
Bora.ru   (2007-08-30 19:52) [32]

короче GetLastError всеравно выдает ошибку "отказано в доступе". Но я на 100% уверен, что к файлу доступ есть. А в папке установлен доступ для записи. Ну люди, не смейтесь - помогите


 
Leonid Troyanovsky ©   (2007-08-30 19:56) [33]


> Bora.ru   (30.08.07 16:31) [17]

>  CopyFile(sourcefile,destfile,false);
>  assignfile(f,"error.txt");
>  rewrite(f);
>  write(f,"no errors");
>  closefile(f);
> except
> e:=getlasterror;

Конечно, вызов CloseHandle из closefile прошел успешно.
Кто ж так ошибки обрабатывает? Учись, студент:

Win32Check(CopyFile(..));

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2007-08-30 19:58) [34]


> Bora.ru   (30.08.07 19:52) [32]

>  Но я на 100% уверен, что к файлу доступ есть. А в папке
> установлен доступ для записи.

Что за приложение, как запускается?

--
Regards, LVT.


 
Riply ©   (2007-08-30 20:06) [35]

> [31] Leonid Troyanovsky © (30.08.07 19:48)
>Под некоторым дебугером? :)
Чесно говоря, я в них(дебугерах) не очень разбираюсь,
но под Delphi этот код даст исключение:
Handle := CreateEvent(nil, True, True, nil);
NtClose(Handle);
NtClose(Handle);

а в Help"e, (например для CloseHandle) написано:
Closing an invalid handle raises an exception when the application is running under a debugger.
This includes closing a handle twice, and using CloseHandle on a
handle returned by the FindFirstFile function.

P.S.
Sorry, что зафлудила ветку.


 
Bora.ru   (2007-08-30 20:10) [36]


> Leonid Troyanovsky ©   (30.08.07 19:58) [34]

> Что за приложение, как запускается?


Просто проект без форм


 
Leonid Troyanovsky ©   (2007-08-30 20:25) [37]


> Riply ©   (30.08.07 20:06) [35]

Принимается.
Да, ИШ как-то приводил здесь примеры,
но были там "нормальные условия" не упомню.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2007-08-30 20:27) [38]


> Bora.ru   (30.08.07 20:10) [36]

> Просто проект без форм

И?

Если сложно, то, конечно, можно не отвечать.

--
Regards, LVT.


 
Bora.ru   (2007-08-30 21:08) [39]


> Leonid Troyanovsky ©   (30.08.07 19:58) [34]
> Что за приложение

в первом сообщении написано - это и есть вся программа

> как запускается?

через Telnet запускается


 
Leonid Troyanovsky ©   (2007-08-30 21:34) [40]


> Bora.ru   (30.08.07 21:08) [39]

> через Telnet запускается

Акаунту телнета разрешен доступ к share?
Что показывает net view \\MyComp?

И в чем, собс-но, смысл этого приложения, если все
можно (если можно) сделать из телнета.

--
Regards, LVT.


 
Reindeer Moss Eater ©   (2007-08-30 22:41) [41]

короче GetLastError всеравно выдает ошибку "отказано в доступе". Но я на 100% уверен, что к файлу доступ есть.

Священный долг любого новичка не верить тому, что говорит гетластеррор.
И ты не исключение.


 
Reindeer Moss Eater ©   (2007-08-30 22:48) [42]

Запускает удаленно из под телнета. А логона на удаленный хост не было -  вот и весь сказ. Винда ему честно говорит, что access denied, а он плачет, но продолжает упорно есть кактус.


 
Bora.ru   (2007-08-31 17:54) [43]


> Reindeer Moss Eater ©   (30.08.07 22:48) [42]
> Запускает удаленно из под телнета.

в том то и фишка, что  - не удаленно. На том компе запущен сервер Remote Administrator и у меня есть таким образом:
1) доступ к его дискам
2) доступ к его коммандной строке.
в первом случае я могу скопировать в любое место на его компе свою прогу, а во втором - запустить ее там.

Да, и просьба не делать замечаний типа "какой смысл копировать файлы своей программой, если это может делать RAdmin". Здесь есть свои ньюансы.


 
Reindeer Moss Eater ©   (2007-08-31 17:58) [44]

Ну и что из этого?
Если ты уверен, что доступ есть, а GetLastError говорит что нет, то это означает что либо ты неправ, и доступа нет, либо вы с ним про разные аккаунты говорите.

Ты уверен, что доступ для Фомы есть, а гетластеррор сообщает, что прога твоя ломится на шару под Еремой и что доступ ему запрещен.


 
Bora.ru   (2007-08-31 19:25) [45]


> Reindeer Moss Eater ©   (31.08.07 17:58) [44]

другими словами, ты хочеш сказать что прога моя должна запускатся под пользователем с правами администратора?


 
Reindeer Moss Eater ©   (2007-08-31 22:36) [46]

Тебе еще вчера по-русски и открытым текстом сказали, что не хватает логона на удаленный хост. Ты туда ломишься под гостем и получаешь свой законный access denied.
Запущен локально как какой-то пользователь, а на удаленном хосте ты гость. И гостю там в шаре по записи - большой и жирный болт.


 
Bora.ru   (2007-09-01 14:47) [47]

но в обратном порядке же работает - если с моего компа в его общую папку.


 
sniknik ©   (2007-09-01 15:54) [48]

обратном порядке одно из двух либо запускаешь программку не из под гостя (что очевидно при посто запуске, не через телнет) либо у него в общей папке стоят более широкие разрешения т.е. и на запись для гостей.


 
Reindeer Moss Eater ©   (2007-09-01 18:24) [49]

Давно бы уже включил аудит и посмотрел бы, кто именно ломится в шары и кто обламывается.



Страницы: 1 2 вся ветка

Текущий архив: 2007.09.30;
Скачать: CL | DM;

Наверх




Память: 0.59 MB
Время: 0.028 c
15-1188377480
Denis_
2007-08-29 12:51
2007.09.30
Браузеры


2-1188917942
delphiForever
2007-09-04 18:59
2007.09.30
быстрая работа с графикой без DirectX и OpenGL


15-1188078391
Германн
2007-08-26 01:46
2007.09.30
Ещё раз про перевод из Си на Паскаль


2-1188802512
Dmitriy_
2007-09-03 10:55
2007.09.30
Как нажать на кнопку в окне браузера


2-1188984903
kyro
2007-09-05 13:35
2007.09.30
Можно ли сделать сортировку в тейбл