Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
Обход ограничений Fat32/ntfs (си) |

03.05.2008, 12:50
|
|
Познающий
Регистрация: 09.01.2006
Сообщений: 53
Провел на форуме: 285050
Репутация:
16
|
|
Обход ограничений Fat32/ntfs (си)
В хорошо изветном нам глянцевом жюрнале за февраль 2004 года (#062) была статья на эту тему. В ней был преведен код по сабжу
PHP код:
#include <windows.h>
void main()
{
char *old = "C:\\TMP\\somefile.txt";
char *_new = "C:\\TMP\\twodots..";
//переменные для нового и старого имени файла
char *newname;
wsprintf(newname,"%s.\\",_new);
//добавляем символы «.\» в новое имя файла
MoveFile(old, newname);
//переименовываем файл
}
Не могу скомпилировать. VC6 ругается:
--------------------Configuration: tryfatntfs - Win32 Debug--------------------
Compiling...
main.cpp C:\Program Files (x86)\Microsoft Visual Studio\MyProjects\tryfatntfs\main.cpp(15) : warning C4700: local variable 'newname' used without having been initialized
Linking...
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
Debug/tryfatntfs.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
tryfatntfs.exe - 2 error(s), 1 warning(s)
С другим способом тоже проблема:
PHP код:
#include <windows.h>
#include <iostream.h>
void CreateStrangeFile(char *filename)
{
char *curdir; //текущая папка
char *uncpath; //полный путь до файла в формате UNC
GetCurrentDirectory(MAX_PATH,curdir); //получаем текущий каталог
wsprintf(uncpath,"\\\\?\\%s\\%s",curdir, filename); //формируем UNC-путь
HANDLE hFile = CreateFile( uncpath, GENERIC_WRITE, FILE_SHARE_WRITE, NULL,
CREATE_ALWAYS, NULL, NULL);
//создаем новый файл
DWORD ret;
__try {
WriteFile(hFile,"This is a super secret info",28,&ret, NULL);
//записываем секретную инфу
}
__finally {
CloseHandle(hFile);
//закрываем файл
}
}
void main()
{
CreateStrangeFile("prn");
//создаем файл «prn»
}
--------------------Configuration: tryfatntfs - Win32 Debug--------------------
Compiling...
main.cpp
C:\Program Files (x86)\Microsoft Visual Studio\MyProjects\tryfatntfs\main.cpp(13) : warning C4700: local variable 'curdir' used without having been initialized
C:\Program Files (x86)\Microsoft Visual Studio\MyProjects\tryfatntfs\main.cpp(15) : warning C4700: local variable 'uncpath' used without having been initialized
Linking...
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
Debug/tryfatntfs.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
tryfatntfs.exe - 2 error(s), 2 warning(s)
Как исправить?
Оригинал статьи
|
|
|

03.05.2008, 13:19
|
|
Новичок
Регистрация: 06.04.2008
Сообщений: 8
Провел на форуме: 21887
Репутация:
10
|
|
Наиболее вероятная пролема - линкер думает, что собирает не консольное приложение, а вин32 приложение, и поэтому ищет entrypoint WinMain()
|
|
|

03.05.2008, 13:21
|
|
Познающий
Регистрация: 09.01.2006
Сообщений: 53
Провел на форуме: 285050
Репутация:
16
|
|
Собираю точно консольное приложение. Побовал кстати компилировать с помошью C++Builder 2007. Тоже не получается.
|
|
|

03.05.2008, 13:26
|
|
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме: 811764
Репутация:
119
|
|
Сообщение от arpm
Наиболее вероятная пролема - линкер думает, что собирает не консольное приложение, а вин32 приложение, и поэтому ищет entrypoint WinMain()
+1.
Вот, что говорит микрософт:
http://support.microsoft.com/default.aspx?scid=kb;EN-US;125750
|
|
|

03.05.2008, 13:26
|
|
Познающий
Регистрация: 09.01.2006
Сообщений: 53
Провел на форуме: 285050
Репутация:
16
|
|
Блин. Извиняюсь. Действительно. Вы правы.
|
|
|

03.05.2008, 14:00
|
|
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме: 811764
Репутация:
119
|
|
А зачем нужно вот это:
Код:
char *newname;
wsprintf(newname,"%s.\\",_new);
?
можно же другим способом "склеить строки"
|
|
|

03.05.2008, 14:04
|
|
Познающий
Регистрация: 09.01.2006
Сообщений: 53
Провел на форуме: 285050
Репутация:
16
|
|
Может только с помошью wsprintf можно задать неправильное имя?
Появилась другая проблема. Программа падает при запуске.
|
|
|

03.05.2008, 15:07
|
|
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме: 811764
Репутация:
119
|
|
Попробуй использовать:
Код:
wchar_t *wcscat( wchar_t *strDestination, const wchar_t *strSource );
|
|
|

03.05.2008, 19:47
|
|
Познающий
Регистрация: 09.01.2006
Сообщений: 53
Провел на форуме: 285050
Репутация:
16
|
|
эээммм.... пожно поподробнее, как?
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|