Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Программное копирование файла (::CopyFile) в system32 под Vista  (Прочитано 11776 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« : 23-07-2007 11:23 » 

Собсно сабж. Не идёт, как любил говаривать один мой знакомый, "гацька така немецька, подлюка".

Права админа. Эксплорером копируется, а программно получаю 5ю ошибку (ERROR_ACCESS_DENIED) "Access is denied."

вот такой код

Код:
			if(!::CopyFile(stSrcFile, stDestFile, FALSE))
{
DWORD dwError = ::GetLastError();
if(dwError == 5)
{
::SetFileAttributes(stDestFile, FILE_ATTRIBUTE_ARCHIVE);
bCopyError = FALSE;
if (!::CopyFile(stSrcFile,stDestFile,FALSE))
{
bCopyError = TRUE;
}
}
else
{
bCopyError = TRUE;
}
}


Поиск в инете дал только похожие проблемы без решений. Одни пишут "у меня не работает!",  другие  "хм.. а у меня всё работает".

Может кто сталкивался?

зы Vista Businness запущена под виртуалкой VMWare. Ща пойду на живой проверять.
« Последнее редактирование: 23-07-2007 11:25 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Sands
Помогающий

ua
Offline Offline

« Ответ #1 : 23-07-2007 14:06 » 

1) Включен ли на Висте UAC?
2) В МСДН-е есть приписочка, что
"This function fails with ERROR_ACCESS_DENIED if the destination file already exists and has the FILE_ATTRIBUTE_HIDDEN or FILE_ATTRIBUTE_READONLY attribute set."
не может ли ето быть причиной проблемы?
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #2 : 24-07-2007 14:24 » 

Бюллетень:



Sands, спасибо за участие.

1. Если UAC выключить, то работает.

2. system32 is ReadOnly, снятие флага не помогает, тем более, что после ребута он снова установлен. Но на ХРюше эта папка тоже ReadOnly и там всё работает. Если у файла поставлень флаги, то для этго служит первая проверка на 5ую ошибку, если это так, то у него устанавливается архивный флаг.

Теперь мои исследования. Судя по всему это проблема имеено с правами доступа, а не с ф-ей.
Тест на не виртуальной Viste прошёл, НО это:  1. Ultimate (Business и Home не работают Не понял)
2. Это комп разработчика с установленными студией, SDK etc. Наверное уже кто-то позаботился об этом.

Дальше. "Нормальный" Админ (пользователь в админской группу) на Viste это не настоящий админ ему надо либо присвоить полные админские права (net user Administrator /active),  либо выполнить программу  через контекстное меню с правами Админа. Тогда тоже всё работает.

Ну и мелкософт как всегда не обошёлся без приколов. Если прога имеет в своём названии setup или install, то тогда она запросто может копировать файлы в system32.

В общем, решение выполнять прогу через контекстное меню "Выполнить как Админ" принято за рабочее, на сим и остановились. Целевая группа - кучи компов на производстве, школах, банках и пр. Ессно никто не имеет права изменять настройки UAC и тп.

Ох уж мне эта виста (хотя поигравшись на ней пару дней склоняюсь к мысли, что она довольна прикольная). И чего все вдруг решили на неё перепрыгнуть? Зименс вон на w2k только в 200.. каком-то году с NT4 перешёл. А тут на тебе. "Это добром не кончится" (с)
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines