요약 삭제하는 동안 :액세스 거부 .exe 파일을 문제의
을 나는 새 위치, 로컬 드라이브에 비해 많은 폴더와 파일을 복사 한 후, 그 다음 특정 파일/폴더를 삭제, 콘솔 응용 프로그램을 . 이 파일 형식 중 하나는 .exe 파일입니다. 삭제하려고 할 때 그것이 나에게 거부 액세스 오류를 제공 파일에게 말했다
기타 참고 사항 (다른 파일과 폴더의 종류뿐만 아니라 삭제하는 동안이 발생합니다). 나는 몇 가지 질문을보고
등을 Unable to delete .exe file through c#. 그러나 로컬 컴퓨터 나 복사 원본에서 프로세스가 실행되지 않았습니다. 저는 도메인의 로컬 관리자이자 도메인 관리자이며, 함께 일하는 디렉토리의 모든 폴더와 파일에 대한 소유권을 가졌습니다. 하지만 여전히 코드에서 파일을 삭제하려고 할 때 액세스가 거부됩니다. 내가 수동으로 이러한 파일/폴더를 삭제하지만 수 있어요 (키 삭제 클릭)
문제 :. 나는 "이 삭제 나에게 액세스를 거부하는이 문제를 과거 얻을 수있는 방법을 찾고 있어요 위에 언급 한 바와 같이
불법 "파일 형식을 내 코드에서 삭제하십시오.
내 코드는 : 어떤 도움을 크게 감상 할 수
#region Delete_Illegal_Items
public static void RemoveIllegalItems()
{
Console.Clear();
DirectoryInfo Libraries = new DirectoryInfo(Library.DestinationMain);
try
{
foreach (var Lib in Libraries.GetDirectories())
{
Console.WriteLine("Working On {0}.", Lib.Name);
Parallel.Invoke(
() =>
{
RemoveBadFiles(Lib);
},
() =>
{
DeleteEmptyFolders(Lib);
}
);
}
}
catch (AggregateException e)
{
Console.WriteLine("There Was An Unusual Error During Initialization Of Library Correction:\n{0}", e.InnerException.ToString());
}
}
private static string[] BadFiles = {
@".hta",
@".exe",
@".lnk",
@".tmp",
@".config",
@".ashx",
@".hta.",
@".hta::$DATA",
@".zip",
@".asmx",
@".json",
@".soap",
@".svc",
@".xamlx",
@".msi",
@".ops",
@".pif",
@".shtm",
@".shtml",
@"smt",
@".vb",
@".vbe",
@".vbs",
@".ds_store",
@".db",
@".ini",
@".tiff"
};
private static void RemoveBadFiles(DirectoryInfo directory)
{
DirectoryInfo[] dirs = null;
FileInfo[] files = null;
if (directory != null)
{
files = directory.GetFiles();
}
try
{
dirs = directory.GetDirectories();
}
catch (IOException) { }
catch (Exception e)
{
Console.WriteLine("\nError During Enumeration Of Items To Delete:\n{0}", e.Message);
}
if (files != null)
{
foreach (var file in files)
{
try
{
if (file.IsReadOnly)
{
file.IsReadOnly = false;
}
if (BadFiles.Contains(Path.GetExtension(file.FullName)))
{
File.Delete(file.FullName);
}
}
catch (Exception e)
{
Console.WriteLine("\nError During Removal Or Illegal Files:\n" + e.Message);
}
}
}
if (dirs != null)
{
foreach (var dir in dirs)
{
switch (dir.Name)
{
case ".TemporaryItems":
{
try
{
Directory.Delete(dir.FullName);
}
catch { }
break;
}
case "AI_RecycleBin":
{
try
{
Directory.Delete(dir.FullName);
}
catch { }
break;
}
case ".ToRemove":
{
try
{
Directory.Delete(dir.FullName);
}
catch { }
break;
}
default:
{
break;
}
}
RemoveBadFiles(dir);
}
}
}
private static void DeleteEmptyFolders(DirectoryInfo directory)
{
Program Main = new Program();
try
{
DirectoryInfo[] dirs = directory.GetDirectories();
foreach (var subDirectory in dirs)
{
int sum = Library.CountLibrary(subDirectory.FullName);
if (sum == 0)
{
Directory.Delete(subDirectory.FullName);
}
DeleteEmptyFolders(subDirectory);
}
}
catch { }
}
#endregion
(업데이트). 이 질문에 다른 곳에서 직접 대답 한 적이 있다면 의견에 자유롭게 언급하십시오. 위에서 언급했듯이 나는이 문제에 관한 과거의 질문을 검토해 왔으며 아직 해결책을 찾지 못했습니다. 그렇지 않으면 도움을 주셔서 감사합니다.
콘솔 응용 프로그램 사용자가 시스템에서 실행하는 권한은 무엇입니까? 콘솔 앱에서이 파일을 만들고 있습니까? –
저 아래서 실행 중입니다. 파일이 네트워크 파일 공유에서 로컬 관리자 권한이있는 로컬 드라이브로 복사되고 있습니다. 또한 파일 셰어와 로컬 컴퓨터는 모두 도메인 아래에있는 모든 것에 대해 전체 읽기/쓰기 권한을 가진 도메인 내에 있습니다. 아무 것도 만들지 않고 복사 된 데이터에서 복사 한 다음 삭제합니다. – CalebB
어떤 줄에서 예외가 발생합니까? 이것은 어떤 파일 또는 특정 파일에만 적용됩니까? – dymanoid