public static bool IsSafeFileName(string FileName, bool AllowSeparators = false)
{
if (FileName.IndexOf("..") != -1)
return false;
else if (!AllowSeparators && FileName.IndexOf(Path.DirectorySeparatorChar) != -1)
return false;
else if (!AllowSeparators && FileName.IndexOf(Path.AltDirectorySeparatorChar) != -1)
return false;
else if (!AllowSeparators && FileName.IndexOfAny(Path.GetInvalidFileNameChars()) != -1)
return false;
else if (AllowSeparators && FileName.IndexOfAny(Path.GetInvalidPathChars()) != -1)
return false;
else if (FileName == "PRN")
return false;
else if (FileName == "AUX")
return false;
else if (FileName == "CON")
return false;
else if (FileName == "NUL")
return false;
else if (FileName == "CONIN$")
return false;
else if (FileName == "CONOUT$")
return false;
else if (FileName == "CLOCK$")
return false;
return true;
}