Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Системные папки

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
google



Зарегистрирован: 12.04.2005
Сообщения: 1

СообщениеДобавлено: Вт Апр 12 2005 09:57    Заголовок сообщения: Системные папки Ответить с цитатой

Подскажите, пожалуйста, как ичистить папки, в которых содержиться интернет-кэш и куки (например - C:\Documents and Settings\username\Local Settings\Temporary Internet Files\Content.IE5) . На С, С++, Pascal. Дело в том, что никакие функции API этих папок, как папки не видят или я что-то не так делаю.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Andrey Grigoriev



Зарегистрирован: 24.06.2004
Сообщения: 17
Откуда: Орел, Россия

СообщениеДобавлено: Вт Апр 12 2005 21:01    Заголовок сообщения: Ответить с цитатой

Вот так работает:
Код:

#include <windows.h>
#include <shlobj.h>
#include <stdio.h>

int WipeAll(const char *path);
void PrintLastError();

int main()
{
  char s[MAX_PATH];
 
  SHGetFolderPath(NULL, CSIDL_PROFILE, NULL, SHGFP_TYPE_CURRENT, s);

  strcat(s, "\\Local Settings\\Temporary Internet Files\\Content.IE5");

  WipeAll(s);

  return 0;
}

int WipeAll(const char *path)
{
  WIN32_FIND_DATA fd;
  HANDLE hFind;

  char pp[MAX_PATH];

  strcpy(pp, path);
  strcat(pp, "\\*.*");

  if ( (hFind = FindFirstFile(pp, &fd)) == INVALID_HANDLE_VALUE )
    return -1;

  do {
//    printf("%s\n", fd.cFileName);
    if ( (strcmp(fd.cFileName, ".") == 0) || (strcmp(fd.cFileName, "..") == 0) )
      continue;
    char buf[MAX_PATH];
    strcpy(buf, path);
    strcat(buf, "\\");
    strcat(buf, fd.cFileName);

    if ( !SetFileAttributes(buf, FILE_ATTRIBUTE_NORMAL) ) {
      printf("Failed to set attributes of \"%s\" reason: ", buf);
      PrintLastError();
      continue;
    }

    if ( fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) {
      WipeAll(buf);
     
      if ( !RemoveDirectory(buf) ) {
        printf("cannot delete directory \"%s\". Reason: ", buf);
        PrintLastError();
      }
    } else if ( !DeleteFile(buf) ) {
      printf("File \"%s\" deletion failed. Reason: ", buf);
      PrintLastError();
    }
  } while ( FindNextFile(hFind, &fd) );

  FindClose(hFind);

  return 0;
}

void PrintLastError()
{
LPVOID lpMsgBuf;
if (!FormatMessage(
    FORMAT_MESSAGE_ALLOCATE_BUFFER |
    FORMAT_MESSAGE_FROM_SYSTEM |
    FORMAT_MESSAGE_IGNORE_INSERTS,
    NULL,
    GetLastError(),
    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
    (LPTSTR) &lpMsgBuf,
    0,
    NULL ))
{
   // Handle the error.
   return;
}

// Process any inserts in lpMsgBuf.
// ...

// Display the string.
char buf[1024];
CharToOem((LPCTSTR)lpMsgBuf, buf);
printf("%s\n", buf);

// Free the buffer.
LocalFree( lpMsgBuf );
}

Я снимаю с себя всю ответственность за то, что эта хрень может чего-то накосячить на чьей-то системе. На моей она очищает указанный в первом посте каталог для текущего пользователя. Под 98 виндой эта программа работать вообще не должна Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...