C# Code Snippets

Wednesday, December 27, 2006

Secure Deletion of files

Here it is a safe method based on the .NET Random class:
///
/// Secure Deletion method
///

///
/// the path of the file to be erased
///
///
/// number of times to run the erase algorithm
///
public static void EraseFile(string strFilename, int nTimes)
{
if (!File.Exists(strFilename))
{
throw new
ArgumentException("The file does not exist");
}
while (nTimes >= 0)
{
FileStream fs = File.OpenWrite(strFilename);
int nBytesInFile = (int)fs.Length;

Random random = new Random();
Byte[] b = new Byte[nBytesInFile];
random.NextBytes(b);

for (int i = 0; i < nBytesInFile; i++)
{
fs.WriteByte(b[i]);
}
fs.Close();

nTimes--;
}
}

Split Text

///
/// Split text without messing the words
///

/// input string
/// desired length
/// output string
public string SplitTextFromEnd(string str, int len)
{
string rez=str;
if(len==0 len >=str.Length)
return rez;
int i=0;
string[] words=str.Split(' ');
rez="";
while(len>rez.Length)
{
rez+=words[i++]+' ';
}
rez=rez.Substring(0,rez.Length-1-words[i-1].Length);
rez+=" ...";
return rez;
}

Read/Write to IsolatedStorage

public void WriteIsolated(string fileName, ArrayList values)
{
//create file
IsolatedStorageFileStream userConfigFile =
new IsolatedStorageFileStream(fileName, FileMode.Create);
//writer
StreamWriter writeStream = new
StreamWriter(userConfigFile);
//write
for (int i = 0; i < values.Count; i++ )
{
writeStream.WriteLine(values[i]);
}
// close all
writeStream.Flush();
writeStream.Close();
userConfigFile.Close();
}

public ArrayList ReadIsolated(string fileName)
{
ArrayList rez=new ArrayList();
try
{
//open file
IsolatedStorageFileStream userConfigFile =
new IsolatedStorageFileStream(fileName, FileMode.Open);
//reader
StreamReader readStream = new
StreamReader(userConfigFile);
//read
string ceva = readStream.ReadLine();
while(ceva!=null)
{
rez.Add(ceva);
ceva = readStream.ReadLine();
}
// close all
readStream.Close();
userConfigFile.Close();
}
catch (System.IO.FileNotFoundException ex)
{
throw ex;
}
return rez;
}

Read/Write to IsolatedStorage

public void WriteIsolated(string fileName, ArrayList values)
{
//create file
IsolatedStorageFileStream userConfigFile =
new IsolatedStorageFileStream(fileName, FileMode.Create);
//writer
StreamWriter writeStream = new
StreamWriter(userConfigFile);
//write
for (int i = 0; i < values.Count; i++ )
{
writeStream.WriteLine(values[i]);
}
// close all
writeStream.Flush();
writeStream.Close();
userConfigFile.Close();
}

public ArrayList ReadIsolated(string fileName)
{
ArrayList rez=new ArrayList();
try
{
//open file
IsolatedStorageFileStream userConfigFile =
new IsolatedStorageFileStream(fileName, FileMode.Open);
//reader
StreamReader readStream = new
StreamReader(userConfigFile);
//read
string ceva = readStream.ReadLine();
while(ceva!=null)
{
rez.Add(ceva);
ceva = readStream.ReadLine();
}
// close all
readStream.Close();
userConfigFile.Close();
}
catch (System.IO.FileNotFoundException ex)
{
throw ex;
}
return rez;
}

Serial protection based on machine ID

using System.Management;
///
/// Returns the processor ID of the first
/// CPU found on the machine
///

public static string CpuInfo()
{
string cpuInfo = String.Empty;
ManagementClass managementClass =
new ManagementClass("Win32_Processor");
ManagementObjectCollection managementObjCol =
managementClass.GetInstances();

foreach(ManagementObject managementObj in managementObjCol)
{
if(cpuInfo==String.Empty)
{
cpuInfo =
managementObj.Properties["ProcessorId"].Value.ToString();
}
}
return cpuInfo;
}

Stop & Start IIS Service

private void StopIIS()
{
ServiceController iis = new ServiceController("W3SVC");
if (null != iis)
{
do
{
iis.Refresh();
}
while
(
iis.Status ==
ServiceControllerStatus.ContinuePending ||
iis.Status ==
ServiceControllerStatus.PausePending ||
iis.Status ==
ServiceControllerStatus.StartPending ||
iis.Status ==
ServiceControllerStatus.StopPending
);
if (ServiceControllerStatus.Running ==
iis.Status ||
ServiceControllerStatus.Paused == iis.Status)
{
iis.Stop();
iis.WaitForStatus(
ServiceControllerStatus.Stopped);
}
iis.Close();
}
}

private void StartIIS()
{
ServiceController iis = new ServiceController("W3SVC");
if (null != iis)
{
do
{
iis.Refresh();
}
while
(
iis.Status ==
ServiceControllerStatus.ContinuePending ||
iis.Status ==
ServiceControllerStatus.PausePending ||
iis.Status ==
ServiceControllerStatus.StartPending ||
iis.Status ==
ServiceControllerStatus.StopPending
);
if (ServiceControllerStatus.Stopped == iis.Status)
{
iis.Start();
iis.WaitForStatus(
ServiceControllerStatus.Running);
}
else
{
if (ServiceControllerStatus.Paused ==
iis.Status)
{
iis.Continue();
iis.WaitForStatus(
ServiceControllerStatus.Running);
}
}
iis.Close();
}
}