remote from files c# file remote-desktop

c# - from - Leer el archivo de registro utilizado por otro proceso



copy from remote desktop to local (2)

Gol

Quiero presionar un botón en mi GUI y leer el archivo seclog.log (registro AV de Symantec) desde una máquina remota y mostrar el contenido del registro en un cuadro de texto enriquecido en mi aplicación.

Cosas que funcionan

todo menos leer el archivo de registro

Mensaje de error

System.IO.IOException was unhandled Message=The process cannot access the file ''//HOSTNAME/C$/Program Files (x86)/Symantec/Symantec Endpoint Protection/seclog.log'' because it is being used by another process. Source=mscorlib

código

//possible seclog paths String seclogPath1 = @"////" + target + "//C$//Program Files (x86)//Symantec//Symantec Endpoint Protection//seclog.log"; String seclogPath2 = @"////" + target + "//C$//Program Files//Symantec//Symantec Endpoint Protection//seclog.log"; //if seclog exists if (File.Exists(seclogPath1)) { //output.AppendText("file exists at " + seclogPath1); //var seclogContent = File.Open(seclogPath1, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); Stream stream = File.OpenRead(seclogPath1); StreamReader streamReader = new StreamReader(stream); string str = streamReader.ReadToEnd(); output.AppendText(str); streamReader.Close(); stream.Close(); }

Cosas que he probado

El archivo está siendo usado por otro proceso

C # El proceso no puede acceder al archivo '''' ''porque está siendo usado por otro proceso

Google el problema

utilizando filestreams de múltiples maneras


//possible seclog paths String seclogPath1 = @"////" + target + "//C$//Program Files (x86)//Symantec//Symantec Endpoint Protection//seclog.log"; String seclogPath2 = @"////" + target + "//C$//Program Files//Symantec//Symantec Endpoint Protection//seclog.log"; //if seclog exists if (File.Exists(seclogPath1)) { //output.AppendText("file exists at " + seclogPath1); //var seclogContent = File.Open(seclogPath1, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); Stream stream = File.Open(seclogPath1, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); //File.OpenRead(seclogPath1); StreamReader streamReader = new StreamReader(stream); string str = streamReader.ReadToEnd(); output.AppendText(str); streamReader.Close(); stream.Close(); }

lo que tuve que cambiar

Tuve que crear una secuencia de archivos readwrite

codigo original

Stream stream = File.OpenRead(seclogPath1); StreamReader streamReader = new StreamReader(stream);

nuevo código

Stream stream = File.Open(seclogPath1, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); //File.OpenRead(seclogPath1); StreamReader streamReader = new StreamReader(stream);


using (StreamReader sr = new StreamReader(filePath, true)) { sr.Close(); //This is mandatory //Do your file operation }