1. 程式人生 > >C# 檔案操作程式碼段儲存

C# 檔案操作程式碼段儲存

 

C# 檔案操作大全

1.建立資料夾
//using System.IO;
Directory.CreateDirectory(%%1);

2.建立檔案
//using System.IO;
File.Create(%%1);

3.刪除檔案
//using System.IO;
File.Delete(%%1);

4.刪除資料夾
//using System.IO;
Directory.Delete(%%1);

5.刪除一個目錄下所有的資料夾
//using System.IO;
foreach (string dirStr in Directory.GetDirectories(%%1))
{
DirectoryInfo dir = new DirectoryInfo(dirStr);
ArrayList folders=new ArrayList();
FileSystemInfo[] fileArr = dir.GetFileSystemInfos();
for (int i = 0; i < folders.Count; i++)
{
FileInfo f = folders[i] as FileInfo;
if (f == null)
{
DirectoryInfo d = folders[i] as DirectoryInfo;
d.Delete();
}
}
}

6.清空資料夾
//using System.IO;
Directory.Delete(%%1,true);
Directory.CreateDirectory(%%1);

7.讀取檔案
//using System.IO;
StreamReader s = File.OpenText(%%1);
string %%2 = null;
while ((%%2 = s.ReadLine()) != null){
%%3
}
s.Close();

8.寫入檔案
//using System.IO;
FileInfo f = new FileInfo(%%1);
StreamWriter w = f.CreateText();
w.WriteLine(%%2);
w.Close();

9.寫入隨機檔案
//using System.IO;
byte[] dataArray = new byte[100000];//new Random().NextBytes(dataArray);
using(FileStream FileStream = new FileStream(%%1, FileMode.Create)){
// Write the data to the file, byte by byte.
for(int i = 0; i < dataArray.Length; i++){
FileStream.WriteByte(dataArray[i]);
}
// Set the stream position to the beginning of the file.
FileStream.Seek(0, SeekOrigin.Begin);
// Read and verify the data.
for(int i = 0; i < FileStream.Length; i++){
if(dataArray[i] != FileStream.ReadByte()){
//寫入資料錯誤
return;
}
}
//"資料流"+FileStream.Name+"已驗證"
}

10.讀取檔案屬性
//using System.IO;
FileInfo f = new FileInfo(%%1);//f.CreationTime,f.FullName
if((f.Attributes & FileAttributes.ReadOnly) != 0){
%%2
}
else{
%%3
}

11.寫入屬性
//using System.IO;
FileInfo f = new FileInfo(%%1);
//設定只讀
f.Attributes = myFile.Attributes | FileAttributes.ReadOnly;
//設定可寫
f.Attributes = myFile.Attributes & ~FileAttributes.ReadOnly;

12.列舉一個資料夾中的所有資料夾
//using System.IO;
foreach (string %%2 in Directory.GetDirectories(%%1)){
%%3

/*
DirectoryInfo dir = new DirectoryInfo(%%1);
FileInfo[] files = dir.GetFiles("*.*");
foreach(FileInfo %%2 in files){
%%3
}
*/

13.複製資料夾
/*
using System.IO;
using System.Collections;
*/
string path = (%%2.LastIndexOf("\\") == %%2.Length - 1) ? %%2 : %%2+"\\";
string parent = Path.GetDirectoryName(%%1);
Directory.CreateDirectory(path + Path.GetFileName(%%1));
DirectoryInfo dir = new DirectoryInfo((%%1.LastIndexOf("\\") == %%1.Length - 1) ? %%1 : %%1 + "\\");
FileSystemInfo[] fileArr = dir.GetFileSystemInfos();
Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos());
while (Folders.Count>0)
{
FileSystemInfo tmp = Folders.Dequeue();
FileInfo f = tmp as FileInfo;
if (f == null)
{
DirectoryInfo d = tmp as DirectoryInfo;
Directory.CreateDirectory(d.FullName.Replace((parent.LastIndexOf("\\") == parent.Length - 1) ? parent : parent + "\\", path));
foreach (FileSystemInfo fi in d.GetFileSystemInfos())
{
Folders.Enqueue(fi);
}
}
else
{
f.CopyTo(f.FullName.Replace(parent, path));
}
}

14.複製目錄下所有的資料夾到另一個資料夾下
/*
using System.IO;
using System.Collections;
*/
DirectoryInfo d = new DirectoryInfo(%%1);
foreach (DirectoryInfo dirs in d.GetDirectories())
{
Queue<FileSystemInfo> al = new Queue<FileSystemInfo>(dirs.GetFileSystemInfos());
while (al.Count > 0)
{
FileSystemInfo temp = al.Dequeue();
FileInfo file = temp as FileInfo;
if (file == null)
{
DirectoryInfo directory = temp as DirectoryInfo;
Directory.CreateDirectory(path + directory.Name);
foreach (FileSystemInfo fsi in directory.GetFileSystemInfos())
al.Enqueue(fsi);
}
else
File.Copy(file.FullName, path + file.Name);
}
}

15.移動資料夾
/*
using System.IO;
using System.Collections;
*/
string filename = Path.GetFileName(%%1);
string path=(%%2.LastIndexOf("\\") == %%2.Length - 1) ? %%2 : %%2 + "\\";
if (Path.GetPathRoot(%%1) == Path.GetPathRoot(%%2))
Directory.Move(%%1, path + filename);
else
{
string parent = Path.GetDirectoryName(%%1);
Directory.CreateDirectory(path + Path.GetFileName(%%1));
DirectoryInfo dir = new DirectoryInfo((%%1.LastIndexOf("\\") == %%1.Length - 1) ? %%1 : %%1 + "\\");
FileSystemInfo[] fileArr = dir.GetFileSystemInfos();
Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos());
while (Folders.Count > 0)
{
FileSystemInfo tmp = Folders.Dequeue();
FileInfo f = tmp as FileInfo;
if (f == null)
{
DirectoryInfo d = tmp as DirectoryInfo;
DirectoryInfo dpath = new DirectoryInfo(d.FullName.Replace((parent.LastIndexOf("\\") == parent.Length - 1) ? parent : parent + "\\", path));
dpath.Create();
foreach (FileSystemInfo fi in d.GetFileSystemInfos())
{
Folders.Enqueue(fi);
}
}
else
{
f.MoveTo(f.FullName.Replace(parent, path));
}
}
Directory.Delete(%%1, true);
}

16.移動目錄下所有的資料夾到另一個目錄下
/*
using System.IO;
using System.Collections;
*/
string filename = Path.GetFileName(%%1);
if (Path.GetPathRoot(%%1) == Path.GetPathRoot(%%2))
foreach (string dir in Directory.GetDirectories(%%1))
Directory.Move(dir, Path.Combine(%%2,filename));
else
{
foreach (string dir2 in Directory.GetDirectories(%%1))
{
string parent = Path.GetDirectoryName(dir2);
Directory.CreateDirectory(Path.Combine(%%2, Path.GetFileName(dir2)));
string dir = (dir2.LastIndexOf("\\") == dir2.Length - 1) ? dir2 : dir2 + "\\";
DirectoryInfo dirdir = new DirectoryInfo(dir);
FileSystemInfo[] fileArr = dirdir.GetFileSystemInfos();
Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dirdir.GetFileSystemInfos());
while (Folders.Count > 0)
{
FileSystemInfo tmp = Folders.Dequeue();
FileInfo f = tmp as FileInfo;
if (f == null)
{
DirectoryInfo d = tmp as DirectoryInfo;
DirectoryInfo dpath = new DirectoryInfo(d.FullName.Replace((parent.LastIndexOf("\\") == parent.Length - 1) ? parent : parent + "\\", %%2));
dpath.Create();
foreach (FileSystemInfo fi in d.GetFileSystemInfos())
{
Folders.Enqueue(fi);
}
}
else
{
f.MoveTo(f.FullName.Replace(parent, %%2));
}
}
dirdir.Delete(true);
}
}

17.以一個資料夾的框架在另一個目錄建立資料夾和空檔案
/*
using System.IO;
using System.Collections;
*/
bool b=false;
string path = (%%2.LastIndexOf("\\") == %%2.Length - 1) ? %%2 : %%2 + "\\";
string parent = Path.GetDirectoryName(%%1);
Directory.CreateDirectory(path + Path.GetFileName(%%1));
DirectoryInfo dir = new DirectoryInfo((%%1.LastIndexOf("\\") == %%1.Length - 1) ? %%1 : %%1 + "\\");
FileSystemInfo[] fileArr = dir.GetFileSystemInfos();
Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos());
while (Folders.Count > 0)
{
FileSystemInfo tmp = Folders.Dequeue();
FileInfo f = tmp as FileInfo;
if (f == null)
{
DirectoryInfo d = tmp as DirectoryInfo;
Directory.CreateDirectory(d.FullName.Replace((parent.LastIndexOf("\\") == parent.Length - 1) ? parent : parent + "\\", path));
foreach (FileSystemInfo fi in d.GetFileSystemInfos())
{
Folders.Enqueue(fi);
}
}
else
{
if(b) File.Create(f.FullName.Replace(parent, path));
}
}

18.複製檔案
//using System.IO;
File.Copy(%%1,%%2);

19.複製一個資料夾下所有的檔案到另一個目錄
//using System.IO;
foreach (string fileStr in Directory.GetFiles(%%1))
File.Copy((%%1.LastIndexOf("\\") == %%1.Length - 1) ? %%1 +Path.GetFileName(fileStr): %%1 + "\\"+Path.GetFileName(fileStr),(%%2.LastIndexOf("\\") == %%2.Length - 1) ? %%2 +Path.GetFileName(fileStr): %%2 + "\\"+Path.GetFileName(fileStr));

20.提取副檔名
//using System.IO;
string %%2=Path.GetExtension(%%1);

21.提取檔名
//using System.IO;
string %%2=Path.GetFileName(%%1);

22.提取檔案路徑
//using System.IO;
string %%2=Path.GetDirectoryName(%%1);

23.替換副檔名
//using System.IO;
File.ChangeExtension(%%1,%%2);

24.追加路徑
//using System.IO;
string %%3=Path.Combine(%%1,%%2);

25.移動檔案
//using System.IO;
File.Move(%%1,%%2+"\\"+file.getname(%%1));

26.移動一個資料夾下所有檔案到另一個目錄
foreach (string fileStr in Directory.GetFiles(%%1))
File.Move((%%1.LastIndexOf("\\") == %%1.Length - 1) ? %%1 +Path.GetFileName(fileStr): %%1 + "\\"+Path.GetFileName(fileStr),(%%2.LastIndexOf("\\") == %%2.Length - 1) ? %%2 +Path.GetFileName(fileStr): %%2 + "\\"+Path.GetFileName(fileStr));

27.指定目錄下搜尋檔案
/*
using System.Text;
using System.IO;
*/
string fileName=%%1;
string dirName=%%2;
DirectoryInfo dirc=new DirectoryInfo(dirName);
foreach(FileInfo file in dirc.GetFiles()) {
if(file.Name.IndexOf(fileName)>-1)
return file.FullName;
}
foreach(DirectoryInfo dir in dirc.GetDirectories()) { 
return GetFile(fileName,dir.FullName); 
}
return "找不到指定的檔案"; 
}

28.開啟對話方塊
OpenFileDialog openFileDialog=new OpenFileDialog(); 
openFileDialog.InitialDirectory=\"c:\\\\\";//注意這裡寫路徑時要用c:\\\\而不是c:\\ 
openFileDialog.Filter=\"文字檔案|*.*|C#檔案|*.cs|所有檔案|*.*\"; 
openFileDialog.RestoreDirectory=true; 
openFileDialog.FilterIndex=1; 
if (openFileDialog.ShowDialog()==DialogResult.OK) { 
fName=openFileDialog.FileName; 
File fileOpen=new File(fName); 
isFileHaveName=true; 
%%1=fileOpen.ReadFile(); 
%%1.AppendText(\"\"); 
}

29.檔案分割
//using System.IO;
FileStream fsr = new FileStream(%%1, FileMode.Open, FileAccess.Read);
byte[] btArr = new byte[fsr.Length];
fsr.Read(btArr, 0, btArr.Length);
fsr.Close();
string strFileName=%%1.Substring(%%1.LastIndexOf("\\")+1);
FileStream fsw = new FileStream(%%2 + strFileName + "1", FileMode.Create, FileAccess.Write);
fsw.Write(btArr, 0, btArr.Length/2);
fsw.Close();
fsw = new FileStream(%%2 + strFileName + "2", FileMode.Create, FileAccess.Write);
fsw.Write(btArr, btArr.Length/2, btArr.Length-btArr.Length/2);
fsw.Close();

30.檔案合併
//using System.IO;
string strFileName = %%1.Substring(%%1.LastIndexOf("\\") + 1);
FileStream fsr1 = new FileStream(%%2 + strFileName + "1", FileMode.Open, FileAccess.Read);
FileStream fsr2 = new FileStream(%%2 + strFileName + "2", FileMode.Open, FileAccess.Read);
byte[] btArr = new byte[fsr1.Length+fsr2.Length];
fsr1.Read(btArr, 0, Convert.ToInt32(fsr1.Length));
fsr2.Read(btArr, Convert.ToInt32(fsr1.Length), Convert.ToInt32(fsr2.Length));
fsr1.Close();fsr2.Close();
FileStream fsw = new FileStream(%%2 + strFileName, FileMode.Create, FileAccess.Write);
fsw.Write(btArr, 0, btArr.Length);
fsw.Close();

31.檔案簡單加密
//using System.IO;
//讀檔案
FileStream fsr = new FileStream(%%1, FileMode.Open, FileAccess.Read);
byte[] btArr = new byte[fsr.Length];
fsr.Read(btArr, 0, btArr.Length);
fsr.Close(); 
for (int i = 0; i < btArr.Length; i++){ //加密
int ibt = btArr[i];
ibt += 100;
ibt %= 256;
btArr[i] = Convert.ToByte(ibt);
}
//寫檔案
string strFileName = Path.GetExtension(%%1);
FileStream fsw = new FileStream(%%2+"/" + "enc_" + strFileName, FileMode.Create, FileAccess.Write);
fsw.Write(btArr, 0, btArr.Length);
fsw.Close();

32.檔案簡單解密
//using System.IO;
FileStream fsr = new FileStream(%%1, FileMode.Open, FileAccess.Read);
byte[] btArr = new byte[fsr.Length];
fsr.Read(btArr, 0, btArr.Length);
fsr.Close();
for (int i = 0; i < btArr.Length; i++){ //解密
int ibt = btArr[i];
ibt -= 100;
ibt += 256;
ibt %= 256;
btArr[i] = Convert.ToByte(ibt);
}
//寫檔案
string strFileName = Path.GetExtension(%%1);
FileStream fsw = new FileStream(%%2 +"/" + strFileName, FileMode.Create, FileAccess.Write);
fsw.Write(btArr, 0, btArr.Length);
fsw.Close();

33.讀取ini檔案屬性
//using System.Runtime.InteropServices;
//[DllImport("kernel32")]//返回取得字串緩衝區的長度
//private static extern long GetPrivateProfileString(string section,string key, string def,StringBuilder retVal,int size,string filePath);
string Section=%%1;
string Key=%%2;
string NoText=%%3;
string iniFilePath="Setup.ini";
string %%4=String.Empty;
if(File.Exists(iniFilePath)){
StringBuilder temp = new StringBuilder(1024);
GetPrivateProfileString(Section,Key,NoText,temp,1024,iniFilePath);
%%4=temp.ToString();
}

34.合併一個目錄下所有的檔案
//using System.IO;
FileStream fsw = new FileStream(%%2, FileMode.Create, FileAccess.Write);
foreach (string fileStr in Directory.GetFiles(%%1))
{
FileStream fsr1 = new FileStream(fileStr, FileMode.Open, FileAccess.Read);
byte[] btArr = new byte[fsr1.Length];
fsr1.Read(btArr, 0, Convert.ToInt32(fsr1.Length));
fsr1.Close();
fsw.Write(btArr, 0, btArr.Length);
}
fsw.Close();

35.寫入ini檔案屬性
//using System.Runtime.InteropServices;
//[DllImport("kernel32")]//返回0表示失敗,非0為成功
//private static extern long WritePrivateProfileString(string section,string key, string val,string filePath);
string Section=%%1;
string Key=%%2;
string Value=%%3;
string iniFilePath="Setup.ini";
bool %%4=false;
if(File.Exists(iniFilePath))
{
long OpStation = WritePrivateProfileString(Section,Key,Value,iniFilePath); 
if(OpStation == 0)
{
%%4=false;
}
else
{
%%4=true;
}
}

36.獲得當前路徑
string %%1=Environment.CurrentDirectory;

37.讀取XML資料庫
//using System.Xml;
XmlDocument doc=new XmlDocument();
doc.Load(%%1);
string %%9;
XmlElement xe=doc.GetElementById(%%7);
XmlNodeList elemList=xe.ChildNodes;
foreach(XmlNode elem in elemList)
{
if(elem.NodeType==%%8)
{
%%9=elem.Value;
break;
}
}

38.寫入XML資料庫
//using System.Xml;
XmlDocument doc=new XmlDocument();
doc.Load(%%1);
XmlNode root=doc.DocumentElement;
XmlElement book=doc.CreateElement(%%3);
XmlElement book=doc.CreateElement(%%5);
XmlElement port=doc.CreateElement(%%6);
book.SetAttribute(%%4,root.ChildNodes.Count.ToString());
author.InnerText=%%8;
book.appendChild(author);
book.appendChild(port);
root.appendChild(book);
doc.Save(%%1);

39.ZIP壓縮檔案
/*
using System.IO;
using System.IO.Compression;
*/
FileStream infile;
try
{
// Open the file as a FileStream object.
infile = new FileStream(%%1, FileMode.Open, FileAccess.Read, FileShare.Read);
byte[] buffer = new byte[infile.Length];
// Read the file to ensure it is readable.
int count = infile.Read(buffer, 0, buffer.Length);
if (count != buffer.Length)
{
infile.Close();
//Test Failed: Unable to read data from file
return;
}
infile.Close();
MemoryStream ms = new MemoryStream();
// Use the newly created memory stream for the compressed data.
DeflateStream compressedzipStream = new DeflateStream(ms, CompressionMode.Compress, true);
//Compression
compressedzipStream.Write(buffer, 0, buffer.Length);
// Close the stream.
compressedzipStream.Close();
//Original size: {0}, Compressed size: {1}", buffer.Length, ms.Length);
FileInfo f = new FileInfo(%%2);
StreamWriter w = f.CreateText();
w.Write(buffer,0,ms.Length);
w.Close();
} // end try
catch (InvalidDataException)
{
//Error: The file being read contains invalid data.
} catch (FileNotFoundException)
{
//Error:The file specified was not found.
} catch (ArgumentException)
{
//Error: path is a zero-length string, contains only white space, or contains one or more invalid characters
} catch (PathTooLongException)
{
//Error: The specified path, file name, or both exceed the system-defined maximum length. For example, on Windows-based

platforms, paths must be less than 248 characters, and file names must be less than 260 characters.
} catch (DirectoryNotFoundException)
{
//Error: The specified path is invalid, such as being on an unmapped drive.
} catch (IOException)
{
//Error: An I/O error occurred while opening the file.
} catch (UnauthorizedAccessException)
{
//Error: path specified a file that is read-only, the path is a directory, or caller does not have the required

permissions.
} catch (IndexOutOfRangeException)
{
//Error: You must provide parameters for MyGZIP.
}

40.ZIP解壓縮
/*
using System.IO;
using System.IO.Compression;
*/
FileStream infile;
try
{
// Open the file as a FileStream object.
infile = new FileStream(%%1, FileMode.Open, FileAccess.Read, FileShare.Read);
byte[] buffer = new byte[infile.Length];
// Read the file to ensure it is readable.
int count = infile.Read(buffer, 0, buffer.Length);
if (count != buffer.Length)
{
infile.Close();
//Test Failed: Unable to read data from file
return;
}
infile.Close();
MemoryStream ms = new MemoryStream();
// ms.Position = 0;
DeflateStream zipStream = new DeflateStream(ms, CompressionMode.Decompress);
//Decompression
byte[] decompressedBuffer = new byte[buffer.Length *2];
zipStream.Close();
FileInfo f = new FileInfo(%%2);
StreamWriter w = f.CreateText();
w.Write(decompressedBuffer);
w.Close();
} // end try
catch (InvalidDataException)
{
//Error: The file being read contains invalid data.
}
catch (FileNotFoundException)
{
//Error:The file specified was not found.
}
catch (ArgumentException)
{
//Error: path is a zero-length string, contains only white space, or contains one or more invalid characters
}
catch (PathTooLongException)
{
//Error: The specified path, file name, or both exceed the system-defined maximum length. For example, on Windows-based

platforms, paths must be less than 248 characters, and file names must be less than 260 characters.
}
catch (DirectoryNotFoundException)
{
//Error: The specified path is invalid, such as being on an unmapped drive.
}
catch (IOException)
{
//Error: An I/O error occurred while opening the file.
}
catch (UnauthorizedAccessException)
{
//Error: path specified a file that is read-only, the path is a directory, or caller does not have the required

permissions.
}
catch (IndexOutOfRangeException)
{
//Error: You must provide parameters for MyGZIP.
}

41.獲得應用程式完整路徑
string %%1=Application.ExecutablePath;

42.ZIP壓縮資料夾
/*
using System.IO;
using System.IO.Compression;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
*/
private void CreateCompressFile(Stream source, string destinationName)
{
using (Stream destination = new FileStream(destinationName, FileMode.Create, FileAccess.Write))
{
using (GZipStream output = new GZipStream(destination, CompressionMode.Compress))
{
byte[] bytes = new byte[4096];
int n;
while ((n = source.Read(bytes, 0, bytes.Length)) != 0)
{
output.Write(bytes, 0, n);
}
}
}
}
ArrayList list = new ArrayList();
foreach (string f in Directory.GetFiles(%%1))
{
byte[] destBuffer = File.ReadAllBytes(f);
SerializeFileInfo sfi = new SerializeFileInfo(f, destBuffer);
list.Add(sfi);
}
IFormatter formatter = new BinaryFormatter();
using (Stream s = new MemoryStream())
{
formatter.Serialize(s, list);
s.Position = 0;
CreateCompressFile(s, %%2);

[Serializable]
class SerializeFileInfo
{
public SerializeFileInfo(string name, byte[] buffer)
{
fileName = name;
fileBuffer = buffer;
}
string fileName;
public string FileName
{
get
{
return fileName;
}
}
byte[] fileBuffer;
public byte[] FileBuffer
{
get
{
return fileBuffer;
}
}
}

43.遞迴刪除目錄下的檔案
//using System.IO;
DirectoryInfo DInfo=new DirectoryInfo(%%1);
FileSystemInfo[] FSInfo=DInfo.GetFileSystemInfos();
for(int i=0;i<FSInfo.Length;i++)
{
FileInfo FInfo=new FileInfo(%%1+FSInfo[i].ToString());
FInfo.Delete();
}

44.驗證DTD
/*
using System.Xml;
using System.Xml.Schema;
*/
XmlReaderSettings settings = new XmlReaderSettings(); 
settings.ProhibitDtd = false; 
settings.ValidationType = ValidationType.DTD; 
settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack); 
// Create the XmlReader object. 
XmlReader reader = XmlReader.Create("my book.xml", settings); 
// Parse the file. 
while (reader.Read());
// Display any validation errors. 
private static void ValidationCallBack(object sender, ValidationEventArgs e) 

Console.WriteLine("Validation Error: {0}", e.Message); 
}

45.Schema 驗證
/*
using System.Xml;
using System.Xml.Schema;
*/
Boolean m_success;
XmlValidatingReader reader = null;
XmlSchemaCollection myschema = new XmlSchemaCollection();
ValidationEventHandler eventHandler = new ValidationEventHandler(ShowCompileErrors);
try
{
//Create the XML fragment to be parsed.
String xmlFrag = "<author xmlns='urn:bookstore- schema'xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>" +
"<first-name>Herman</first-name>" +
"<last-name>Melville</last-name>" +
"</author>";
//Create the XmlParserContext.
XmlParserContext context = new XmlParserContext(null, null, "", XmlSpace.None);
//Implement the reader.
reader = new XmlValidatingReader(xmlFrag, XmlNodeType.Element, context);
//Add the schema.
myschema.Add("urn:bookstore-schema", "c:\\Books.xsd");
//Set the schema type and add the schema to the reader.
reader.ValidationType = ValidationType.Schema;
reader.Schemas.Add(myschema);
while (reader.Read())
{
}
Console.WriteLine("Completed validating xmlfragment");
}
catch (XmlException XmlExp)
{
Console.WriteLine(XmlExp.Message);
}
catch(XmlSchemaException XmlSchExp)
{
Console.WriteLine(XmlSchExp.Message);
}
catch(Exception GenExp)
{
Console.WriteLine(GenExp.Message);
}
finally
{
Console.Read();
}
public static void ShowCompileErrors(object sender, ValidationEventArgs args)
{
Console.WriteLine("Validation Error: {0}", args.Message);
}

46.Grep
/*
using System.Collections;
using System.Text.RegularExpressions;
using System.IO;
using System.Security;
using CommandLine.Utility;
*/
//Traditionally grep stands for "Global Regular Expression Print".
//Global means that an entire file is searched. 
//Regular Expression means that a regular expression string is used to establish a search pattern. 
//Print means that the command will display its findings. 
//Simply put, grep searches an entire file for the pattern you want and displays its findings.
//
//The use syntax is different from the traditional Unix syntax, I prefer a syntax similar to
//csc, the C# compiler.
//
// grep [/h|/H] - Usage Help
//
// grep [/c] [/i] [/l] [/n] [/r] /E:reg_exp /F:files
//
// /c - print a count of matching lines for each input file;
// /i - ignore case in pattern;
// /l - print just files (scanning will stop on first match);
// /n - prefix each line of output with line number;
// /r - recursive search in subdirectories;
//
// /E:reg_exp - the Regular Expression used as search pattern. The Regular Expression can be delimited by
// quotes like "..." and '...' if you want to include in it leading or trailing blanks;
//
// /F:files - the list of input files. The files can be separated by commas as in /F:file1,file2,file3
//and wildcards can be used for their specification as in /F:*file?.txt;
//
//Example:
//
// grep /c /n /r /E:" C Sharp " /F:*.cs 
//Option Flags
private bool m_bRecursive;
private bool m_bIgnoreCase;
private bool m_bJustFiles;
private bool m_bLineNumbers;
private bool m_bCountLines;
private string m_strRegEx;
private string m_strFiles;
//ArrayList keeping the Files
private ArrayList m_arrFiles = new ArrayList();
//Properties
public bool Recursive
{
get { return m_bRecursive; }
set { m_bRecursive = value; }
}

public bool IgnoreCase
{
get { return m_bIgnoreCase; }
set { m_bIgnoreCase = value; }
}

public bool JustFiles
{
get { return m_bJustFiles; }
set { m_bJustFiles = value; }
}

public bool LineNumbers
{
get { return m_bLineNumbers; }
set { m_bLineNumbers = value; }
}

public bool CountLines
{
get { return m_bCountLines; }
set { m_bCountLines = value; }
}

public string RegEx
{
get { return m_strRegEx; }
set { m_strRegEx = value; }
}

public string Files
{
get { return m_strFiles; }
set { m_strFiles = value; }
}

//Build the list of Files
private void GetFiles(String strDir, String strExt, bool bRecursive)
{
//search pattern can include the wild characters '*' and '?'
string[] fileList = Directory.GetFiles(strDir, strExt);
for(int i=0; i<fileList.Length; i++)
{
if(File.Exists(fileList[i]))
m_arrFiles.Add(fileList[i]);
}
if(bRecursive==true)
{
//Get recursively from subdirectories
string[] dirList = Directory.GetDirectories(strDir);
for(int i=0; i<dirList.Length; i++)
{
GetFiles(dirList[i], strExt, true);
}
}
}

//Search Function
public void Search()
{
String strDir = Environment.CurrentDirectory;
//First empty the list
m_arrFiles.Clear();
//Create recursively a list with all the files complying with the criteria
String[] astrFiles = m_strFiles.Split(new Char[] {','});
for(int i=0; i<astrFiles.Length; i++)
{
//Eliminate white spaces
astrFiles[i] = astrFiles[i].Trim();
GetFiles(strDir, astrFiles[i], m_bRecursive);
}
//Now all the Files are in the ArrayList, open each one
//iteratively and look for the search string
String strResults = "Grep Results:\r\n\r\n";
String strLine;
int iLine, iCount;
bool bEmpty = true;
IEnumerator enm = m_arrFiles.GetEnumerator();
while(enm.MoveNext())
{
try
{
StreamReader sr = File.OpenText((string)enm.Current);
iLine = 0;
iCount = 0;
bool bFirst = true;
while((strLine = sr.ReadLine()) != null)
{
iLine++;
//Using Regular Expressions as a real Grep
Match mtch;
if(m_bIgnoreCase == true)
mtch = Regex.Match(strLine, m_strRegEx, RegexOptions.IgnoreCase);
else
mtch = Regex.Match(strLine, m_strRegEx);
if(mtch.Success == true)
{
bEmpty = false;
iCount++;
if(bFirst == true)
{
if(m_bJustFiles == true)
{
strResults += (string)enm.Current + "\r\n";
break;
}
else
strResults += (string)enm.Current + ":\r\n";
bFirst = false;
}
//Add the Line to Results string
if(m_bLineNumbers == true)
strResults += " " + iLine + ": " + strLine + "\r\n";
else
strResults += " " + strLine + "\r\n";
}
}
sr.Close();
if(bFirst == false)
{
if(m_bCountLines == true)
strResults += " " + iCount + " Lines Matched\r\n";
strResults += "\r\n";
}
}
catch(SecurityException)
{
strResults += "\r\n" + (string)enm.Current + ": Security Exception\r\n\r\n"; 
}
catch(FileNotFoundException)
{
strResults += "\r\n" + (string)enm.Current + ": File Not Found Exception\r\n";
}
}
if(bEmpty == true)
Console.WriteLine("No matches found!");
else
Console.WriteLine(strResults);
}

//Print Help
private static void PrintHelp()
{
Console.WriteLine("Usage: grep [/h|/H]");
Console.WriteLine(" grep [/c] [/i] [/l] [/n] [/r] /E:reg_exp /F:files");
}

Arguments CommandLine = new Arguments(args);
if(CommandLine["h"] != null || CommandLine["H"] != null)
{
PrintHelp();
return;
}
// The working object
ConsoleGrep grep = new ConsoleGrep();
// The arguments /e and /f are mandatory
if(CommandLine["E"] != null)
grep.RegEx = (string)CommandLine["E"];
else
{
Console.WriteLine("Error: No Regular Expression specified!");
Console.WriteLine();
PrintHelp();
return;
}
if(CommandLine["F"] != null)
grep.Files = (string)CommandLine["F"];
else
{
Console.WriteLine("Error: No Search Files specified!");
Console.WriteLine();
PrintHelp();
return;
}
grep.Recursive = (CommandLine["r"] != null);
grep.IgnoreCase = (CommandLine["i"] != null);
grep.JustFiles = (CommandLine["l"] != null);
if(grep.JustFiles == true)
grep.LineNumbers = false;
else
grep.LineNumbers = (CommandLine["n"] != null);
if(grep.JustFiles == true)
grep.CountLines = false;
else
grep.CountLines = (CommandLine["c"] != null);
// Do the search
grep.Search();

47.直接建立多級目錄
//using System.IO;
DirectoryInfo di=new DirectoryInfo(%%1);
di.CreateSubdirectory(%%2);

48.批量重新命名
//using System.IO;
string strOldFileName; string strNewFileName; string strOldPart =this.textBox1.Text.Trim();//重新命名檔案前的檔名等待替換字串
string strNewPart = this.textBox2.Text.Trim();//重新命名檔案後的檔名替換字串
string strNewFilePath;
string strFileFolder; //原始圖片目錄
int TotalFiles = 0; DateTime StartTime = DateTime.Now; //獲取開始時間 
FolderBrowserDialog f1 = new FolderBrowserDialog(); //開啟選擇目錄對話方塊
if (f1.ShowDialog() == DialogResult.OK) {
strFileFolder = f1.SelectedPath;
DirectoryInfo di = new DirectoryInfo(strFileFolder);
FileInfo[] filelist = di.GetFiles("*.*"); 
int i = 0;
foreach (FileInfo fi in filelist) { 
strOldFileName = fi.Name;
strNewFileName = fi.Name.Replace(strOldPart, strNewPart);
strNewFilePath = @strFileFolder + "\\" + strNewFileName;
filelist[i].MoveTo(@strNewFilePath); TotalFiles += 1; 
this.listBox1.Items.Add("檔名:" + strOldFileName + "已重新命名為" + strNewFileName);
i += 1; 

}
DateTime EndTime = DateTime.Now;//獲取結束時間
TimeSpan ts = EndTime - StartTime; this.listBox1.Items.Add("總耗時:" + ts.Hours.ToString() + "時" +ts.Minutes.ToString() + "分" + ts.Seconds.ToString() + "秒");

49.文字查詢替換
/*
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
*/
if (args.Length == 3)
{
ReplaceFiles(args[0],args[1],args[2],null);
}

if (args.Length == 4)
{
if (args[3].Contains("v"))
{
ReplaceVariable(args[0], args[1], args[2], args[3]);
}
else
{
ReplaceFiles(args[0], args[1], args[2], args[3]);
}
}

/**//// <summary>
/// 替換環境變數中某個變數的文字值。可以是系統變數,使用者變數,臨時變數。替換時會覆蓋原始值。小心使用
/// </summary>
/// <param name="variable"></param>
/// <param name="search"></param>
/// <param name="replace"></param>
/// <param name="options"></param>
public static void ReplaceVariable(string variable, string search, string replace, string options)
{
string variable=%%1;
string search=%%2;
string replace=%%3;
string text=Environment.GetEnvironmentVariable(variable);
System.Windows.Forms.MessageBox.Show(text);
text=ReplaceText(text, search, replace, options);
Environment.SetEnvironmentVariable(variable, text);
text = Environment.GetEnvironmentVariable(variable);
System.Windows.Forms.MessageBox.Show(text);
}

 

/**//// <summary>
/// 批量替換檔案文字
/// </summary>
/// <param name="args"></param>
public static void ReplaceFiles(string path,string search, string replace, string options)
{
string path=%%1;
string search=%%2;
string replace=%%3;
string[] fs;
if(File.Exists(path)){
ReplaceFile(path, search, replace, options);
return;
}
if (Directory.Exists(path))
{
fs = Directory.GetFiles(path);
foreach (string f in fs)
{

ReplaceFile(f, search, replace, options);
}
return;
}
int i=path.LastIndexOf("\");
if(i<0)i=path.LastIndexOf("/");
string d, searchfile;
if (i > -1)
{
d = path.Substring(0, i + 1);
searchfile = path.Substring(d.Length);
}
else
{
d = System.Environment.CurrentDirectory;
searchfile = path;
}

searchfile = searchfile.Replace(".", @".");
searchfile = searchfile.Replace("?", @"[^.]?");
searchfile = searchfile.Replace("*", @"[^.]*");
//System.Windows.Forms.MessageBox.Show(d); System.Windows.Forms.MessageBox.Show(searchfile);
if (!Directory.Exists(d)) return;
fs = Directory.GetFiles(d);
foreach (string f in fs)
{
if(System.Text.RegularExpressions.Regex.IsMatch(f,searchfile))
ReplaceFile(f, search, replace, options);
}
}

/**//// <summary>
/// 替換單個文字檔案中的文字
/// </summary>
/// <param name="filename"></param>
/// <param name="search"></param>
/// <param name="replace"></param>
/// <param name="options"></param>
/// <returns></returns>
public static bool ReplaceFile(string filename, string search, string replace,string options)
{
string path=%%1;
string search=%%2;
string replace=%%3;
FileStream fs = File.OpenRead(filename);
//判斷檔案是文字檔案還二進位制檔案。該方法似乎不科學
byte b;
for (long i = 0; i < fs.Length; i++)
{
b = (byte)fs.ReadByte();
if (b == 0)
{
System.Windows.Forms.MessageBox.Show("非文字檔案");
return false;//有此位元組則表示改檔案不是文字檔案。就不用替換了
}
}
//判斷文字檔案編碼規則。
byte[] bytes = new byte[2];
Encoding coding=Encoding.Default;
if (fs.Read(bytes, 0, 2) > 2)
{
if (bytes == new byte[2] { 0xFF, 0xFE }) coding = Encoding.Unicode;
if (bytes == new byte[2] { 0xFE, 0xFF }) coding = Encoding.BigEndianUnicode;
if (bytes == new byte[2] { 0xEF, 0xBB }) coding = Encoding.UTF8;
}
fs.Close();
//替換資料
string text=File.ReadAllText(filename, coding);
text=ReplaceText(text,search, replace, options);
File.WriteAllText(filename, text, coding);
return true;
}
/**//// <summary>
/// 替換文字
/// </summary>
/// <param name="text"></param>
/// <param name="search"></param>
/// <param name="replace"></param>
/// <param name="options"></param>
/// <returns></returns>
public static string ReplaceText(string text, string search, string replace, string options)
{
RegexOptions ops = RegexOptions.None;
if (options == null) //純文字替換
{
search = search.Replace(".", @".");
search = search.Replace("?", @"?");
search = search.Replace("*", @"*");
search = search.Replace("(", @"(");
search = search.Replace(")", @")");
search = search.Replace("[", @"[");
search = search.Replace("[", @"[");
search = search.Replace("[", @"[");
search = search.Replace("{", @"{");
search = search.Replace("}", @"}");
ops |= RegexOptions.IgnoreCase;
}
else
{
if(options.Contains("I"))ops |= RegexOptions.IgnoreCase;
}
text = Regex.Replace(text, search, replace, ops);
return text;
}

50.檔案關聯
//using Microsoft.Win32;
string keyName; 
string keyValue; 
keyName = %%1; //"WPCFile"
keyValue = %%2; //"資源包檔案"
RegistryKey isExCommand = null; 
bool isCreateRegistry = true; 
try 

/// 檢查 檔案關聯是否建立 
isExCommand = Registry.ClassesRoot.OpenSubKey(keyName); 
if (isExCommand == null) 

isCreateRegistry = true; 

else 

if (isExCommand.GetValue("Create").ToString() == Application.ExecutablePath.ToString()) 

isCreateRegistry = false; 

else 

Registry.ClassesRoot.DeleteSubKeyTree(keyName); 
isCreateRegistry = true; 
}



catch (Exception) 

isCreateRegistry = true; 
}

if (isCreateRegistry) 

try 

RegistryKey key, keyico; 
key = Registry.ClassesRoot.CreateSubKey(keyName); 
key.SetValue("Create", Application.ExecutablePath.ToString()); 
keyico = key.CreateSubKey("DefaultIcon"); 
keyico.SetValue("", Application.ExecutablePath + ",0"); 
key.SetValue("", keyValue); 
key = key.CreateSubKey("Shell"); 
key = key.CreateSubKey("Open"); 
key = key.CreateSubKey("Command"); 
key.SetValue("", "\"" + Application.ExecutablePath.ToString() + "\" \"%1\""); 
keyName = %%3; //".wpc"
keyValue = %%1; 
key = Registry.ClassesRoot.CreateSubKey(keyName); 
key.SetValue("", keyValue); 

catch (Exception) 


}

51.操作Excel檔案
//using Excel;
private static string Connstring ;//連線字串
Workbook myBook = null;
Worksheet mySheet=null;
Excel.ApplicationClass ExlApp = new ApplicationClass();
ExlApp.Visible =true;
object oMissiong = System.Reflection.Missing.Value;
string reqpath = this.Request.PhysicalPath;
int pos = reqpath.LastIndexOf("\\");
reqpath = reqpath.Substring(0,pos);
ExlApp.Workbooks.Open(%%1,oMissiong, oMissiong, oMissiong,oMissiong, oMissiong, oMissiong,
oMissiong,oMissiong,oMissiong, oMissiong, oMissiong, oMissiong);//, oMissiong);//, oMissiong); // reqpath + "\\scxx.xls"
myBook = ExlApp.Workbooks[1];
mySheet = (Worksheet)myBook.Worksheets[1];
Excel.Range rg;  
string mySelectQuery = %%2; //"SELECT dh, qy,zb FROM SCXXB"
using(SqlConnection myConnection = new SqlConnection(Connstring)){
SqlCommand myCommand = new SqlCommand(mySelectQuery,myConnection);
myConnection.Open();
SqlDataReader myReader;
myReader = myCommand.ExecuteReader();
// Always call Read before accessing data.
int recount=0;
while (myReader.Read()) 
{
recount=recount+1;
}
myReader.Close();
myConnection.Close();
int gho=3;
for(int i = 1; i < recount ; i ++)
{
rg = mySheet.get_Range("A" + gho.ToString(), "C" + ( gho ).ToString());
rg.Copy(oMissiong);
rg.Insert(XlInsertShiftDirection.xlShiftDown);
}
//從資料表中取資料
mySelectQuery = %%2; //"SELECT dh, qy,zb FROM SCXXB ORDER BY qy,zb";
myConnection = new SqlConnection(Connstring);
myCommand = new SqlCommand(mySelectQuery,myConnection);
myConnection.Open();
myReader = myCommand.ExecuteReader();
int Curhs = gho ;
while (myReader.Read()) 
{
mySheet.Cells[Curhs,1] =myReader["qy"].ToString() ;
mySheet.Cells[Curhs,2] =myReader["zb"].ToString() ;
mySheet.Cells[Curhs,3] =myReader["dh"].ToString() ;
Curhs ++;
}
myReader.Close();
//合併最後一頁
MergeCell(ref mySheet,3 , recount ,"A"); //呼叫函式實現A列合併
MergeCell(ref mySheet,3 , recount ,"B"); //呼叫函式實現A列合併
myBook.SaveAs(%%1, oMissiong,oMissiong, oMissiong,oMissiong,oMissiong,Excel.XlSaveAsAccessMode.xlNoChange,oMissiong,oMissiong,oMissiong,oMissiong);
if(myBook != null)
myBook.Close(true, %%1, true);
if(mySheet != null)
System.Runtime.InteropServices.Marshal.ReleaseComObject (mySheet);
mySheet = null;
if(myBook != null)
System.Runtime.InteropServices.Marshal.ReleaseComObject (myBook);
myBook = null;
if(ExlApp != null)
{
ExlApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject ((object)ExlApp);
ExlApp = null;
}
GC.Collect();
/// 合併單元格
private void MergeCell(ref Worksheet mySheet, int startLine,int RecCount, string Col)
{
string qy1 = mySheet.get_Range(Col + startLine.ToString(), Col + startLine.ToString()).Text.ToString();
Excel.Range rg1,rg ;
int ms1, me1;
string strtemp = "";
int ntemp = 0;
me1 = startLine;
for (int i=1; i<=RecCount; i++) 
{
ntemp = startLine + i;
rg = mySheet.get_Range(Col+ ntemp.ToString(), Col+ ntemp.ToString());
strtemp = rg.Text.ToString().Trim();
if (qy1.Trim() != strtemp.Trim())
{
ms1 = me1;
me1 = i + startLine - 1;
//合併
if (me1-ms1>0)
{
rg1 = mySheet.get_Range(Col + ms1.ToString(), Col + me1.ToString());
rg1.ClearContents();
rg1.MergeCells = true;
if(Col == "A")
mySheet.Cells[ms1,1] = qy1;
else if (Col == "B")
mySheet.Cells[ms1,2] = qy1;
}
me1 += 1;
strtemp = mySheet.get_Range(Col + me1.ToString(), Col + me1.ToString()).Text.ToString();
if(strtemp.Trim() != "")
qy1 = strtemp;
}

}

52.設定JDK環境變數
/*
JAVA_HOME=C:\j2sdk1.4.2_04
CLASSPATH=.;C:\j2sdk1.4.2_04\lib\tools.jar;C:\j2sdk1.4.2_04\lib\dt.jar;C:\j2sdk1.4.2_04 
path=C:\j2sdk1.4.2_04\bin; 
*/
//using Microsoft.Win32;
int isFileNum=0;
int i=0;
Environment.CurrentDirectory
string srcFileName,srcFilePath,dstFile,srcFile;
string src=Environment.CurrentDirectory+"\\*.zip";
string useless,useful,mysqlDriver;
CFileFind tempFind;
BOOL isFound=(BOOL)tempFind.FindFile(src);
RegistryKey rkLocalM = Registry.CurrentUser; //Registry.ClassesRoot, Registry.LocalMachine, Registry.Users, Registry.CurrentConfig
const string strSubKey = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\RunMRU";
RegistryKey rkSub = rkLocalM.CreateSubKey( strSubKey );
rkSub.SetValue("a","winword -q\\1");
rkSub.SetValue("MRUList","azyxwvutsrqponmlkjihgfedcb");
rkSub.SetValue("b","cmd /k\\1");
rkSub.SetValue("c","iexplore -k\\1");
rkSub.SetValue("d","iexpress\\1");
rkSub.SetValue("e","mmc\\1");
rkSub.SetValue("f","msconfig\\1");
rkSub.SetValue("g","regedit\\1");
rkSub.SetValue("h","regedt32\\1");
rkSub.SetValue("i","Regsvr32 /u wmpshell.dll\\1");
rkSub.SetValue("j","sfc /scannow\\1");
rkSub.SetValue("k","shutdown -s -f -t 600\\1");
rkSub.SetValue("l","shutdown -a\\1");
rkSub.SetValue("m","C:\\TurboC\\BIN\\TC.EXE\\1");
rkSub.SetValue("n","services.msc\\1");
rkSub.SetValue("o","gpedit.msc\\1");
rkSub.SetValue("p","fsmgmt.msc\\1");
rkSub.SetValue("q","diskmgmt.msc\\1");
rkSub.SetValue("r","dfrg.msc\\1");
rkSub.SetValue("s","devmgmt.msc\\1");
rkSub.SetValue("t","compmgmt.msc\\1");
rkSub.SetValue("u","ciadv.msc\\1");
rkSub.SetValue("v","C:\\MATLAB701\\bin\\win32\\MATLAB.exe -nosplash -nojvm\\1");
rkSub.SetValue("w","C:\\MATLAB701\\bin\\win32\\MATLAB.exe -nosplash\\1");
rkSub.SetValue("x","C:\\Program Files\\Kingsoft\\PowerWord 2005\\XDICT.EXE\" -nosplash\\1");
rkSub.SetValue("y","powerpnt -splash\\1");
rkSub.SetValue("z","excel -e\\1");
RegistryKey rkSub = rkLocalM.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Regedit\\Favorites");
rkSub.SetValue("DIY_IEToolbar","我的電腦\\HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\Extensions");
rkSub.SetValue("資料夾右鍵選單","我的電腦\\HKEY_CLASSES_ROOT\\Folder");
rkSub.SetValue("指向“收藏夾”","我的電腦\\HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Regedit\\Favorites");
rkSub.SetValue("預設安裝目錄(SourcePath)","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion");
rkSub.SetValue("設定字型替換","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\FontSubstitutes");
rkSub.SetValue("設定光碟機自動執行功能(AutoRun)","我的電腦\\HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Cdrom");
rkSub.SetValue("改變滑鼠設定","我的電腦\\HKEY_CURRENT_USER\\Control Panel\\Mouse");
rkSub.SetValue("加快選單的顯示速度(MenuShowDelay<400)","我的電腦\\HKEY_CURRENT_USER\\Control Panel\\desktop");
rkSub.SetValue("修改系統的註冊單位(RegisteredOrganization)","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion");
rkSub.SetValue("檢視啟動","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");
rkSub.SetValue("檢視單次啟動1","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce");
rkSub.SetValue("檢視單次啟動2","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnceEx");
rkSub.SetValue("任意定位牆紙位置(WallpaperOriginX/Y)","我的電腦\\HKEY_CURRENT_USER\\Control Panel\\desktop");
rkSub.SetValue("設定啟動資訊提示(LegalNoticeCaption/Text)","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon");
rkSub.SetValue("更改登陸時的背景圖案(Wallpaper)","我的電腦\\HKEY_USERS\\.DEFAULT\\Control Panel\\Desktop");
rkSub.SetValue("限制遠端修改本機登錄檔(\\winreg\\AllowedPaths\\Machine)","我的電腦\\HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\SecurePipeServers");
rkSub.SetValue("修改環境變數","我的電腦\\HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment");
rkSub.SetValue("設定網路伺服器(severname","\\\\ROBERT)");
rkSub.SetValue("為一塊網絡卡指定多個IP地址(\\網絡卡名\\Parameters\\Tcpip\\IPAddress和SubnetMask)","我的電腦\\HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services");
rkSub.SetValue("去除可移動裝置出錯資訊(\\裝置名\\ErrorControl)","我的電腦\\HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services");
rkSub.SetValue("限制使用顯示屬性","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system");
rkSub.SetValue("不允許擁護在控制面板中改變顯示模式(NoDispAppearancePage)","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system");
rkSub.SetValue("隱藏控制面板中的“顯示器”設定(NoDispCPL)","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system");
rkSub.SetValue("不允許使用者改變主面背景和牆紙(NoDispBackgroundPage)","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system");
rkSub.SetValue("“顯示器”屬性中將不會出現“螢幕保護程式”標籤頁(NoDispScrSavPage)","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system");
rkSub.SetValue("“顯示器”屬性中將不會出現“設定”標籤頁(NoDispSettingPage)","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system");
rkSub.SetValue("阻止使用者執行工作管理員(DisableTaskManager)","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system");
rkSub.SetValue("“啟動”選單記錄資訊","我的電腦\\HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\RunMRU");
rkSub.SetValue("Office2003使用者指定資料夾","我的電腦\\HKEY_CURRENT_USER\\Software\\Microsoft\\Office\\11.0\\Common\\Open Find\\Places\\UserDefinedPlaces");
rkSub.SetValue("OfficeXP使用者指定資料夾","我的電腦\\HKEY_CURRENT_USER\\Software\\Microsoft\\Office\\10.0\\Common\\Open Find\\Places\\UserDefinedPlaces");
rkSub.SetValue("檢視VB6臨時檔案","我的電腦\\HKEY_CURRENT_USER\\Software\\Microsoft\\Visual Basic\\6.0\\RecentFiles");
rkSub.SetValue("設定預設HTML編輯器","我的電腦\\HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\Default HTML Editor");
rkSub.SetValue("更改重要URL","我的電腦\\HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\Main");
rkSub.SetValue("控制面板註冊位置","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Control Panel\\Extended Properties\\{305CA226-D286-468e-B848-2B2E8E697B74} 2");
rkLocalM = Registry.ClassesRoot; //Registry.ClassesRoot, Registry.LocalMachine, Registry.Users, Registry.CurrentConfig
rkSub = rkLocalM.OpenSubKey("Directory\\shell\\cmd");
rkSub.SetValue("","在這裡開啟命令列視窗");
rkSub = rkLocalM.OpenSubKey("Directory\\shell\\cmd\\command");
rkSub.SetValue("","cmd.exe /k \"cd %L\"");
rkLocalM = Registry.LocalMachine; //Registry.ClassesRoot, Registry.LocalMachine, Registry.Users, Registry.CurrentConfig
rkSub = rkLocalM.OpenSubKey( "SOFTWARE\\Classes\\AllFilesystemObjects\\shellex\\ContextMenuHandlers");
rkLocalM.CreateSubKey("Copy To");
rkLocalM.CreateSubKey("Move To");
rkLocalM.CreateSubKey("Send To");
rkSub = rkLocalM.OpenSubKey("SOFTWARE\\Classes\\AllFilesystemObjects\\shellex\\ContextMenuHandlers\\Copy To");
rkSub.SetValue("","{C2FBB630-2971-11D1-A18C-00C04FD75D13}");
rkSub = rkLocalM.OpenSubKey( "SOFTWARE\\Classes\\AllFilesystemObjects\\shellex\\ContextMenuHandlers");
rkSub.SetValue("","{C2FBB631-2971-11D1-A18C-00C04FD75D13}");
rkSub = rkLocalM.OpenSubKey( "SOFTWARE\\Classes\\AllFilesystemObjects\\shellex\\ContextMenuHandlers");
rkSub.SetValue("","{7BA4C740-9E81-11CF-99D3-00AA004AE837}");
rkSub = rkLocalM.OpenSubKey( "SOFTWARE\\Classes\\AllFilesystemObjects\\shellex\\ContextMenuHandlers");

rkLocalM = Registry.LocalMachine; 
rkSub = rkLocalM.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\Folder\\Hidden\\SHOWALL");
rkSub.SetValue( "RegPath","Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced");
rkSub.SetValue( "ValueName","Hidden");
rkSub = rkLocalM.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ControlPanel\\NameSpace\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}");
rkSub.SetValue("","Folder Options");
rkLocalM = Registry.ClassesRoot;
rkSub = rkLocalM.OpenSubKey("CLSID\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}"))
rkSub.SetValue(CLSID.WriteString("","資料夾選項");
rkSub = rkLocalM.OpenSubKey("CLSID\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}\\Shell\\RunAs\\Command"))
rkSub.SetValue("Extended","");
/*
if(REGWriteDword(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\Folder\\Hidden\\SHOWALL","CheckedValue",1)!=ERROR_SUCCESS)

//AfxMessageBox("寫入失敗"); 

if(REGWriteDword(HKEY_CLASSES_ROOT,"CLSID\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}\\ShellFolder","Attributes",0)!=ERROR_SUCCESS)

//AfxMessageBox("寫入失敗"); 

if(REGWriteDword(HKEY_CLASSES_ROOT,"CLSID\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}","{305CA226-D286-468e-B848-2B2E8E697B74} 2",1)!=ERROR_SUCCESS)

//AfxMessageBox("寫入失敗"); 


BYTE InfoTip[] = {0x40,0x00,0x25,0x00,0x53,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x52,0x00,0x6f,0x00,0x6f,0x00,0x74,0x00,0x25,0x00,0x5c,0x00,0x73,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x33,0x00,0x32,0x00,0x5c,0x00,0x53,0x00,0x48,0x00,0x45,0x00,0x4c,0x00,0x4c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x2c,0x00,0x2d,0x00,0x32,0x00,0x32,0x00,0x39,0x00,0x32,0x00,0x34,0x00,0x00,0x00 }; 
REGWriteBinary(HKEY_LOCAL_MACHINE,InfoTip,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ControlPanel\\NameSpace\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}","InfoTip");

BYTE LocalizedString[] = {0x40,0x00,0x25,0x00,0x53,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x52,0x00,0x6f,0x00,0x6f,0x00,0x74,0x00,0x25,0x00,0x5c,0x00,0x73,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x33,0x00,0x32,0x00,0x5c,0x00,0x53,0x00,0x48,0x00,0x45,0x00,0x4c,0x00,0x4c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x2c,0x00,0x2d,0x00,0x32,0x00,0x32,0x00,0x39,0x00,0x38,0x00,0x35,0x00,0x00,0x00 }; 
REGWriteBinary(HKEY_LOCAL_MACHINE,LocalizedString,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ControlPanel\\NameSpace\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}","LocalizedString");

BYTE btBuf[]= {0x25,0x00,0x53,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x52,0x00,0x6f,0x00,0x6f,0x00,0x74,0x00,0x25,0x00,0x5c,0x00,0x73,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x33,0x00,0x32,0x00,0x5c,0x00,0x53,0x00,0x48,0x00,0x45,0x00,0x4c,0x00,0x4c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x2c,0x00,0x2d,0x00,0x32,0x00,0x31,0x00,0x30,0x00,0x00,0x00 }; 
REGWriteBinary(HKEY_LOCAL_MACHINE,btBuf,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ControlPanel\\NameSpace\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}\\DefaultIcon","");

BYTE Command1[]= {0x72,0x00,0x75,0x00,0x6e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x65,0x00,0x78,0x00,0x65,0x00,0x20,0x00,0x73,0x00,0x68,0x00,0x65,0x00,0x6c,0x00,0x6c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x2c,0x00,0x4f,0x00,0x70,0x00,0x74,0x00,0x69,0x00,0x6f,0x00,0x6e,0x00,0x73,0x00,0x5f,0x00,0x52,0x00,0x75,0x00,0x6e,0x00,0x44,0x00,0x4c,0x00,0x4c,0x00,0x20,0x00,0x30,0x00,0x00,0x00 }; 
REGWriteBinary(HKEY_LOCAL_MACHINE,Command1,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ControlPanel\\NameSpace\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}\\Shell\\Open\\Command","");

BYTE Command2[]= {0x72,0x00,0x75,0x00,0x6e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x65,0x00,0x78,0x00,0x65,0x00,0x20,0x00,0x73,0x00,0x68,0x00,0x65,0x00,0x6c,0x00,0x6c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x2c,0x00,0x4f,0x00,0x70,0x00,0x74,0x00,0x69,0x00,0x6f,0x00,0x6e,0x00,0x73,0x00,0x5f,0x00,0x52,0x00,0x75,0x00,0x6e,0x00,0x44,0x00,0x4c,0x00,0x4c,0x00,0x20,0x00,0x30,0x00,0x00,0x00 }; 
REGWriteBinary(HKEY_LOCAL_MACHINE,Command2,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ControlPanel\\NameSpace\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}\\Shell\\RunAs\\Command","");

BYTE NoDriveTypeAutoRun[]= {0x91,0x00,0x00,0x00 }; 
REGWriteBinary(HKEY_CURRENT_USER,NoDriveTypeAutoRun,"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer","NoDriveTypeAutoRun");

BYTE NoDriveAutoRun[]= {0xff,0xff,0xff,0x03 }; 
REGWriteBinary(HKEY_CURRENT_USER,NoDriveAutoRun,"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer","NoDriveAutoRun");

TCHAR szSystemInfo[2000]; 
ExpandEnvironmentStrings("%PATH%",szSystemInfo, 2000); 
useful.Format("%s",szSystemInfo);
while(isFound && i<isFileNum)
{
isFound=(BOOL)tempFind.FindNextFile();
if(tempFind.IsDirectory())
{
srcFileName=tempFind.GetFileTitle();
srcFilePath=tempFind.GetFilePath();
if(srcFileName.Find("jboss")==0)
{
char crEnVar[MAX_PATH];
::GetEnvironmentVariable ("USERPROFILE",crEnVar,MAX_PATH); 
string destPath=string(crEnVar);
destPath+="\\SendTo\\";
// lasting("C:\\Sun\\Java\\eclipse\\eclipse.exe",destPath);
string destPath2=destPath+"一鍵JBoss除錯.lnk";
useless.Format("%s\\%s",szDir,"jboss.exe");
srcFile=useless.GetBuffer(0);
dstFile=srcFilePath+"\\jboss.exe";
CopyFile(srcFile,dstFile,false);
lasting(dstFile.GetBuffer(0),destPath2);
useless.Format("%s\\%s",szDir,"DLL1.dll");
srcFile=useless.GetBuffer(0);
dstFile=srcFilePath+"\\DLL1.dll";
CopyFile(srcFile,dstFile,false);
useless.Format("%s\\%s",szDir,mysqlDriver.GetBuffer(0));
srcFile=useless.GetBuffer(0);
dstFile=srcFilePath+"\\server\\default\\lib\\mysql.jar";
CopyFile(srcFile,dstFile,false);
useless.Format("%s\\%s",szDir,"DeployDoc.exe");
srcFile=useless.GetBuffer(0);
dstFile=srcFilePath+"\\DeployDoc.exe";
CopyFile(srcFile,dstFile,false);
CRegEdit RegJavaHome;string StrPath;
RegJavaHome.m_RootKey=HKEY_LOCAL_MACHINE;
RegJavaHome.OpenKey("SOFTWARE\\JavaSoft\\Java Development Kit\\1.6");
RegJavaHome.ReadString("JavaHome",StrPath);

CRegEdit SysJavaHome;string StrJavaHome;
SysJavaHome.m_RootKey=HKEY_LOCAL_MACHINE;
SysJavaHome.OpenKey("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment");
SysJavaHome.WriteString("JAVA_HOME",(LPCTSTR)StrPath);
SysJavaHome.WriteString("CLASSPATH",".;%JAVA_HOME%\\lib");

CRegEdit RegHomePath;
RegHomePath.m_RootKey=HKEY_CURRENT_USER;
RegHomePath.OpenKey("Environment");
StrJavaHome.Format("%s\\bin;%sJAVA_HOME%s\\bin;%s",srcFilePath.GetBuffer(0),"%","%",szSystemInfo);
RegHomePath.WriteString("HOME_PATH",(LPCTSTR)StrPath);

useful=StrJavaHome;
SysJavaHome.WriteString("Path",(LPCTSTR)StrJavaHome);

RegHomePath.WriteString("JBOSS_HOME",(LPCTSTR)srcFilePath);
// string temp=destPath+"JBoss編譯除錯.cmd";
string temp2;
temp2.Format("%s\\%s",szDir,"JBoss編譯除錯.cmd");
lasting(temp2.GetBuffer(0),destPath2);
destPath2=destPath+"VC檔案清理.lnk";
useless.Format("%s\\FileCleaner.exe",szDir);
lasting(useless.GetBuffer(0),destPath2);
destPath2=destPath+"註冊並壓縮.lnk";
useless.Format("%s\\rarfavlst.vbs",szDir);
lasting(useless.GetBuffer(0),destPath2);
destPath2=destPath+"打包轉移.lnk";
useless.Format("%s\\rarApp.vbs",szDir);
lasting(useless.GetBuffer(0),destPath2);
/*
TCHAR szPath[MAX_PATH];
//CSIDL_SENDTO($9)
// 表示當前使用者的“傳送到”資料夾,例如:C:\Documents and Settings\username\SendTo
if(SUCCEEDED(SHGetFolderPath(NULL, 
CSIDL_SENDTO|CSIDL_FLAG_CREATE, 
NULL, 
0, 
szPath))) 
{
//printf(szPath);
}
string targetPath(szPath);
lasting(targetPath,);

*/
}
else if(srcFileName.Find("resin")==0)
{
useless.Format("%s\\%s",szDir,"resin.exe");
srcFile=useless.GetBuffer(0);
dstFile=srcFilePath+"\\resin2.exe";
CopyFile(srcFile,dstFile,false);
useless.Format("%s\\%s",szDir,"DLL1.dll");
srcFile=useless.GetBuffer(0);
dstFile=srcFilePath+"\\DLL1.dll";
CopyFile(srcFile,dstFile,false);
useless.Format("%s\\%s",szDir,"DeployDoc.exe");
srcFile=useless.GetBuffer(0);
dstFile=srcFilePath+"\\DeployDoc.exe";
CopyFile(srcFile,dstFile,false);
string StrPath;

CRegEdit SysJavaHome;string StrJavaHome;
SysJavaHome.m_RootKey=HKEY_LOCAL_MACHINE;
SysJavaHome.OpenKey("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment");

CRegEdit RegHomePath;
RegHomePath.m_RootKey=HKEY_CURRENT_USER;
RegHomePath.OpenKey("Environment");
RegHomePath.WriteString("RESIN_HOME",(LPCTSTR)srcFilePath); //D:\resin-3.2.0

useless.Format("%s\\bin;%s",srcFilePath.GetBuffer(0),useful.GetBuffer(0));
useful=useless;
SysJavaHome.WriteString("Path",(LPCTSTR)useful);
Sleep(5000);
}
else if(srcFileName.Find("ant")>0)
{
string StrPath;

CRegEdit SysJavaHome;string StrJavaHome;
SysJavaHome.m_RootKey=HKEY_LOCAL_MACHINE;
SysJavaHome.OpenKey("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment");


CRegEdit RegHomePath;
RegHomePath.m_RootKey=HKEY_CURRENT_USER;
RegHomePath.OpenKey("Environment");
RegHomePath.WriteString("ANT_HOME",(LPCTSTR)srcFilePath); //D:\apache-ant-1.7.1\ PATH=%ANT_HOME%/bin

useless.Format("%s\\bin;%s",srcFilePath.GetBuffer(0),useful.GetBuffer(0));
useful=useless;
SysJavaHome.WriteString("Path",(LPCTSTR)useful);
Sleep(5000);
}
else if(srcFileName.Find("eclipse")==0 || srcFileName.Find("NetBeans")==0)
{
//char * xmFile="";
//SaveFileToStr("deploy.xml",xmFile);
}
}
else
continue;
}
*/

53.選擇資料夾對話方塊
/*
using System.IO;
using System.Windows.Forms.Design;;//載入System.Design.dll的.Net API
*/
public class FolderDialog : FolderNameEditor
{
FolderNameEditor.FolderBrowser fDialog = new
System.Windows.Forms.Design.FolderNameEditor.FolderBrowser();
public FolderDialog()
{
}
public DialogResult DisplayDialog()
{
return DisplayDialog("請選擇一個資料夾");
}

public DialogResult DisplayDialog(string description)
{
fDialog.Description = description;
return fDialog.ShowDialog();
}
public string Path
{
get
{
return fDialog.DirectoryPath;
}
}
~FolderDialog()
{
fDialog.Dispose();
}

FolderDialog aa = new FolderDialog();
aa.DisplayDialog();
if(aa.ShowDialog()==DialogResult.OK)
{
%%1 = aa.SelectedPath;
}

54.刪除空資料夾
/*
using System.IO;
using System.Text.RegularExpressions;
*/
bool IsValidFileChars(string strIn) 

Regex regEx = new Regex("[\\*\\\\/:?<>|\"]");
return !regEx.IsMatch("aj\\pg"); 

try
{
string path = %%1;
if(!IsValidFileChars(path))
throw new Exception("非法目錄名!");
if(!Directory.Exists(path))
throw new Exception("本地目錄路徑不存在!");
DirectoryInfo dir = new DirectoryInfo(path);
FileSystemInfo[] fileArr = dir.GetFileSystemInfos();
Queue<String> Folders = new Queue<String>(Directory.GetDirectories(aa.Path));
while (Folders.Count > 0)
{
path = Folders.Dequeue();
string[] dirs = Directory.GetDirectories(path);
Directory.Delete(path);
}
foreach (string direct in dirs)
{
Folders.Enqueue(direct);
}
catch (Exception ep)
{
MessageBox.show(ep.ToString());
}
}

55.傳送資料到剪貼簿
//using System.Windows.Forms;
Clipboard.SetText(%%1);

56.從剪貼簿中取資料
//using System.Windows.Forms;
IDataObject iData = Clipboard.GetDataObject();
string %%1;
// 將資料與指定的格式進行匹配,返回bool
if (iData.GetDataPresent(DataFormats.Text))
{
// GetData檢索資料並指定一個格式
%%1 = (string)iData.GetData(DataFormats.Text);
}
else
{
MessageBox.Show("目前剪貼簿中資料不可轉換為文字","錯誤");
}

57.獲取檔案路徑的父路徑
//using S