Я обнаружил, что код C # может циклически проходить по любому указанному нами каталогу, я пытался преобразовать его в C ++ / CLI и сделать так, чтобы он просматривал все системные файлы и папки.Проблема в том, что код позволяет определить уровень глубины, необходимый для сканирования!Мне нужно, чтобы он зацикливал все файлы и папки независимо от уровня глубины ... Это то, что я сделал ... Есть некоторые исключения!
#include "stdafx.h"
using namespace System;
using namespace System::IO;
ref class Scan {
public:
static int MaxPath=260000000;
static void ScanMyDir( String^ SourceDir,int RecursiveLevel) {
if(RecursiveLevel<=MaxPath) {
array <String^> ^fileEntries = Directory::GetFiles(SourceDir);
for each (String^ fileName in fileEntries) {
Console::WriteLine(fileName);
}
}
array<String^> ^SubDirEntries = Directory::GetDirectories(SourceDir);
for each (String^ subdir in SubDirEntries)
if ((File::GetAttributes(subdir) & FileAttributes::ReparsePoint)!= FileAttributes::ReparsePoint)
ScanMyDir(subdir,RecursiveLevel+1);
}
};
int main(array<System::String ^> ^args) {
Scan::ScanMyDir("c://",1);
Console::Read();
return 0;
}
После некоторых изменений (до сих порс некоторыми ошибками):
using namespace System;
using namespace System::IO;
static void ScanMyDir( String^ SourceDir) {
array <String^> ^fileEntries = Directory::GetFiles(SourceDir);
for each (String^ fileName in fileEntries) {
Console::WriteLine(fileName);
}
array<String^> ^SubDirEntries = Directory::GetDirectories(SourceDir);
for each (String^ subdir in SubDirEntries)
if ((File::GetAttributes(subdir) & FileAttributes::ReparsePoint)!= FileAttributes::ReparsePoint)
ScanMyDir(subdir);
}
int main(array<System::String ^> ^args) {
try {
ScanMyDir("C://Windows");
}
catch {
Console::WriteLine("Some Denied files or Folders");
}
return 0;
}
Это ошибки:
Ошибка 1, ошибка C2059: синтаксическая ошибка: '{' c: \ Users \ Ahmed \ documents \ visual studio2010 \ Projects \ eeee \ eeee \ eeee.cpp 31
Ошибка 6, ошибка C2059: синтаксическая ошибка: '}' c: \ Users \ Ahmed \ Documents \ visual studio 2010 \ Projects \ eeee \ eeee \ eeee.cpp 37
Ошибка 8, ошибка C2059: синтаксическая ошибка: '}' c: \ Users \ Ahmed \ Documents \ visual studio 2010 \ Projects \ eeee \ eeee \ eeee.cpp 37
Ошибка 5ошибка C2059: синтаксическая ошибка: 'return' c: \ Users \ Ahmed \ Documents \ visual studio 2010 \ Projects \ eeee \ eeee \ eeee.cpp 36
Ошибка 4 ошибка C2061: синтаксическая ошибка: идентификатор 'WriteLine'c: \ Users \ Ahmed \ Documents \ visual studio 2010 \ Projects \ eeee \ eeee \ eeee.cpp 32
Ошибка 7 Ошибка C2143: синтаксическая ошибка: отсутствует ';'перед '}' c: \ Users \ Ahmed \ Documents \ visual studio 2010 \ Projects \ eeee \ eeee \ eeee.cpp 37
Ошибка 2 Ошибка C2309: обработчик перехвата ожидал объявления исключения в скобках в скобках c: \ Users \Ahmed \ Documents \ visual studio 2010 \ Projects \ eeee \ eeee \ eeee.cpp 31
Ошибка 3, ошибка C2319: за «catch» должен следовать составной оператор.Отсутствует '{' c: \ Users \ Ahmed \ Documents \ visual studio 2010 \ Projects \ eeee \ eeee \ eeee.cpp 32