Попробовал написать твою программку, у меня вроде работает,
хотя не исключено что где-нибудь что-нибудь напутал
#include <windows.h>
#include <conio.h>
#include <shlwapi.h>
#include <iostream>
using namespace std;
void copy_and_hide(LPCTSTR lpPath, LPCTSTR lpFileName);
int main()
{
TCHAR path[]="d:\\fff.files\\";
TCHAR anyfile[]="d:\\fff.files\\*.*";
WIN32_FIND_DATA w32fd;
LPWIN32_FIND_DATA lpw32fd=&w32fd;
HANDLE h = FindFirstFile(anyfile, lpw32fd);
if(h==INVALID_HANDLE_VALUE)
{
cout<<"error";
return -1;
}
if(!(lpw32fd->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
copy_and_hide(path, lpw32fd->cFileName);
while(FindNextFile(h, lpw32fd))
{
if(!(lpw32fd->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
copy_and_hide(path, lpw32fd->cFileName);
}
FindClose(h);
getch();
return 0;
}
void copy_and_hide(LPCTSTR lpPath, LPCTSTR lpFileName)
{
TCHAR buffer[MAX_PATH];
GetCurrentDirectory(MAX_PATH, buffer);
StrCat(buffer, "\\");
TCHAR path[MAX_PATH];
StrCpy(path, lpPath);
CopyFile(StrCat(path, lpFileName), StrCat(buffer, lpFileName), FALSE);
DWORD attr=GetFileAttributes(buffer);
SetFileAttributes(buffer, attr | FILE_ATTRIBUTE_HIDDEN);
cout<<buffer<<" is copied"<<endl;
return;
}