Попытки скопироваться в системную папку заканчиваются обломом. При отладке заметил что winapi функция GetSystemDirectory() возвращает C:\Windows\system32 а папочка на самом деле System32, короче с большой буквы. Понятно конечно что можно подправить самому, или после не удачи поробовать скопироваться в папку с большой буквы. Но тем не менее, почему такая ерунда? Почему при папке System32 я получаю system32 ???
Я как бы понял и не понял. Мне в принципе до лампочки регистрозависимые они ли нет. Просто если winapi предоставляет мне для определения системной папки специальную функцию, я ее использую. И что я получаю при этом? Совершенно левый путь, пусть одна буковка, но тем не менее для программы это абсолютно другой, и тем самым левый путь. Как быть?
что ты несешь? тебе сказали же, что венде похрен на регистр символов. хочть system32, хоть SyStEm32. это не играет никакой роли.
Оо, становится вообще интересно. Короче походу дело не в бобине Определяю системную папку. Копирую туда файл. CopyFile() возвращает 1, что есть nonzero = успех. Но найти этот свежескопированный файл я убей не могу. (даже среди скрытых и системных). Что за хрень? Прога запускается от админа. В правах походу дело не должно быть. Система windows 7 x64 Копирую впринципе так: Code: char installPath[MAX_PATH]; GetSystemDirectory(installPath, MAX_PATH); if( installPath[lstrlen(installPath)-1] != '\\' ) lstrcat(installPath, "\\"); lstrcat(installPath, FILE_NAME); CopyFile(currentPath, installPath, false); Причем если все тоже самое проделываю с виндовской папкой то все отлично срастается. Только с системной папкой такая трабла.
Есть подозрение, что ТС это делает на Windows 7. А там нужны специальные привелегии, чтобы иметь возможность копировать в System32. Юзерских прав малова-то будет. UPDATE Ну так я и думал, что семёрка... Code: CopyFile(currentPath, installPath, false); Мне одному показалось на этом месте, что ты копируешь директорию в директорию ? UPDATE 2 Если проблема с системной папкой - прав программы на копирование файла недостаточно. (Это в случае отсутствия кривого кода копирования файла).
Тебе показалось, файл копирует себя самого в системную папку. currentPath путь к себе самому включая имя файла, installPath путь к системной папке включая имя файла. Насчет прав сомневаюсь, как уже сказал, права админа. Привелегии может быть, если да хотелось бы знать какие. Хотя походу легче забить и копироваться в виндовскую папку.
Походу так оно и есть, иначе этого никак больше не объяснишь. Круто, одним движением волшебной палочки, все вири и трояны работавшие под ХР и устанавливавшие себа в сис.папку лихо пролетают под семеркой. Мистика правда в том, что при отладке вижу что функция CopyFile() возвращает 1 = успех.
А вот и разгадка наконец то. У меня такая же хрень была с установкой значения ключа регистра. Ставил ставил на HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run а он попадал в HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run Там помог твой совет с ключиком KEY_WOW64_64KEY для RegCreateKeyEx(). А тут как быть?