.NET 3.x Обойти файлы с защитой и настроить кодировку - C#
Формулировка задачи:
Объединяю два вопроса в один, потому что они связаны между собой!
Я делаю программу, которая будет открывать cmd, проверять пинг локальной сети и записывать его в файл .txt .
Далее программа должна открыть для пользователя этот файл, в чем возникает сразу 2 проблемы:
1) Поиск затрагивает защищенные директории, которые отказывают в доступе. Происходит вызов UnauthorizedAccessException. Я не хочу бороться с защитой, надо просто обойти её. Как это сделать?
2) После открытия txt файла с логами процесса, я получаю карлючки. Как настроить нужную кодировку для текста из cmd?
Пример кода:
3) И правильно ли я понимаю, SearchOption.AllDirectories выполняет поиск полностью по всему диску C:\, даже в самом низу? Например, C:\Documents and Settings\Buddy\Рабочий стол\Work\Others\Screenshots
cmdPath cp = new cmdPath(); // public struct cmdPath { public IPHostEntry local_ip; public string host; }
ProcessStartInfo psi;
cp.host = Dns.GetHostName();
cp.local_ip = Dns.GetHostEntry(cp.host);
psi = new ProcessStartInfo("cmd", @"/c ping " + cp.local_ip + " > log cmd_log.txt");
psi.WindowStyle = ProcessWindowStyle.Normal;
Process.Start(psi);FileInfo[] fi = new DirectoryInfo(@"C:").GetFiles("cmd_log.txt", SearchOption.AllDirectories);
do
{
Console.WriteLine("Searching.");
Thread.Sleep(700);
Console.Clear();
Console.WriteLine("Searching..");
Thread.Sleep(700);
Console.Clear();
Console.WriteLine("Searching...");
Thread.Sleep(700);
Console.Clear();
} while (fi.Count() < 1);
if (fi.Count() >= 1)
{
Console.Clear();
Process.Start("cmd_log.txt", "notepad.exe");
}
else
{
Console.Write("File cannot be found.");
Thread.Sleep(2500);
Console.Clear();
}Решение задачи: «.NET 3.x Обойти файлы с защитой и настроить кодировку»
textual
Листинг программы
ping.StandardOutput.BaseStream.CopyTo(tempFileStream);