Code
读取
首先引用 ing System.Management; //取CPU号
public string GetCpuID()
{
try
{
ManagementClass mc = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = mc.GetInstances();string strCpuID = null ;
foreach( ManagementObject mo in moc )
{
strCpuID = mo.Properties["ProcessorId"].Value.ToString();
break;
}
return strCpuID;
}
catch
{
return "";
}
}//取第一块硬盘号
public string GetHardDiskID()
{
ManagementClass mc=new ManagementClass("Win32_DiskDrive");
string returnstr = "";
foreach(ManagementObject mb in mc.GetInstances())
{
returnstr = mb.Properties["PNPDeviceID"].Value.ToString();
if(returnstr != "") break;
}
return returnstr;
}//end //取第一块网卡号
public string GetNetworkID()
{
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration");
string strNetworkID = null ;
foreach(ManagementObject mo in searcher.Get())
{
strNetworkID = mo["MACAddress"].ToString().Trim();
if(strNetworkID != "")
{
break;
}
}
return strNetworkID ;
}
catch
{
return "";
}
}//end //取串口
public int getport(int portnum)
{
//链接服务器
DirectoryEntry root = new DirectoryEntry("IIS://localhost/W3SVC");
//检测是否已存在相同串口的站点,并获取PORT值
foreach(DirectoryEntry e in root.Children)
{
if(e.SchemaClassName == "IIsWebServer")
{
if(e.Properties["ServerBindings"].Value != null)
{
int strstart = e.Properties["ServerBindings"].Value.ToString().IndexOf(":",0);
int strend = e.Properties["ServerBindings"].Value.ToString().IndexOf(":",strstart+1);
string thisport = e.Properties["ServerBindings"].Value.ToString().Substring((strstart+1),(strend-strstart-1));
if(thisport == portnum.ToString())
{
portnum++;
portnum = getport(portnum);
break;
}
}
}
}
return portnum;
} //以下示例说明如何从 HKEY_CURRENT_USER 读取一个 DWORD 值:
using Microsoft.Win32;
RegistryKey regVersion = new RegistryKey();
string keyValue = "Software\\Microsoft\\TestApp\\1.0"; //此处你在注册表HKEY_CURRENT_USER中选一个就是了
regVersion = Registry.CurrentUser.OpenSubKey(keyValue,false);
int intVersion = 0;
if(regVersion != null)
{
intVersion = regVersion.GetValue("Version",0);
regVersion.Close();
}//以下示例读取并递增一个 DWORD 值,然后将其写入 HKEY_CURRENT_USER:
RegistryKey regVersion = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\TestApp\\1.0", true);
if(regVersion != null)
{
// Key doesn't exist; create it.
regVersion =
Registry.CurrentUser.CreateSubKey("SOFTWARE\\Microsoft\\TestApp\\1.0");
}int intVersion = 0;
if(regVersion != null)
{
intVersion = regVersion.GetValue("Version", 0);
intVersion = intVersion + 1;
regVersion.SetValue("Version", intVersion);
regVersion.Close();
}参考,msdn帮助上有的 一般的可解的加密。。/// <summary>
/// 加密函数,输出加密过后的字符串
/// </summary>
/// <param name="Str">为要加密的字符串</param>
/// <returns>加密过的字符串</returns>
public static string Encrypt(string Str)
{
System.Web.Security.FormsAuthenticationTicket ticket1 = new System.Web.Security.FormsAuthenticationTicket(Str,false,1);
return System.Web.Security.FormsAuthentication.Encrypt(ticket1);
}/// <summary>
/// Encrypt的解密函数
/// </summary>
/// <param name="Str">要解密的字符串</param>
/// <returns>返回解密过的字符串</returns>
public static string Decrypt(string Str)
{
System.Web.Security.FormsAuthenticationTicket ticket1 = System.Web.Security.FormsAuthentication.Decrypt(Str);
return ticket1.Name;
}
C#播放声音和FLASH
一、在C#播放声音
新建一个C#的Windows Form工程(Windows应用程序),并且定义两个菜单按钮(menuItem1,menuItem2)。
选择菜单中的“工具”中的“自定义工具箱(添加/移除工具箱项)”,在自定义工具箱的窗口中,点击展开“COM 组件”项,选中“Window Media Player”选项。确定后在“工具箱”中便会出现“Windows Media Player”这一项,然后再将其拖至Form上,调整大小,系统在“引用”中自动加入了对此dll的引用,AxMediaPlayer就是我们使用的Namespace与class。
在属性栏中设置好此控件的一些属性,为了方便,这里我把AutoStart设置成为true(其实默认是true),只要FileName被设置(打开了文件),则文件将会自动播放。完整代码如下:
private void menuItem1_Click(object sender, System.EventArgs e)
{
OpenFileDialog ofDialog = new OpenFileDialog();
ofDialog.AddExtension = true;
ofDialog.CheckFileExists = true;
ofDialog.CheckPathExists = true;
//the next sentence must be in single line
ofDialog.Filter = "VCD文件(*.dat)|*.dat|Audio文件(*.avi)|*.avi
|WAV文件(*.wav)|*.wav|MP3文件(*.mp3)|*.mp3|所有文件 (*.*)|*.*";
ofDialog.DefaultExt = "*.mp3";
if(ofDialog.ShowDialog() == DialogResult.OK)
{
// 2003一下版本 方法 this.axMediaPlayer1.FileName = ofDialog.FileName;
this.axMediaPlayer1.URL= ofDialog.FileName;//2005用法
}
}
这里使用的是微软的播放器,大家也可以试试Winamp的控件,如果你只需要播放声音而不需要显示,你只要把AxMediaPlayer的Visible属性设置为false就可以了。
二、播放Flash动画
播放Flash动画的原理与声音差不多,也是直接引用Flash的dll,不过这个dll不能直接在“COM 组件”窗口中找到,需要我们手动添加,选择菜单中的“工具”--“自定义工具箱”,打开“自定义工具箱”窗口,在“COM 组件”中点击“浏览”键,然后选择“c:\\WINNT(WINDOWS)\\system32\\MacromedFlashswflash.ocx"控件,确定后在工具箱中就可以看到“FlashFactory”,“ShockwaveFlash”两个新控件,我们需要使用的是“ShockwaveFlash”,将其拖到新建的Form上,然后再设置一些属性即可。
下面是简单的操作代码,即打开swf文件,并播放它:
private void menuItem2_Click(object sender, System.EventArgs e)
{
OpenFileDialog ofDialog = new OpenFileDialog();
ofDialog.AddExtension = true;
ofDialog.CheckFileExists = true;
ofDialog.CheckPathExists = true;
ofDialog.Filter = "swf 文件 (*.swf)|*.swf|所有文件 (*.*)|*.*";
ofDialog.DefaultExt = "mp3";
if(ofDialog.ShowDialog() == DialogResult.OK)
{
this.axShockwaveFlash1.Movie = ofDialog.FileName;
this.axShockwaveFlash1.Play();
}
}
Visual Studio .Net以前的版本,要对注册表进行修改,则需要调用系统API,而现在则不用那么麻烦,因为.Net已经把注册表相关的操作封装到一个类中,调用的时候只要只要调用此类对象相应的属性或方法即可。
以下就注册表这个类进行说明。
首先,要引入注册类所在的nampespace,如下:
接下来就是对注册表的操作,则第一步要像以前操作的那样,需要设定注册表的位置,例如:
RegistryKey rkLocalM = Registry.LocalMachine;
而注册表各个根的具体对应如下:
HKEY_CLASSES_ROOT
ClassesRoot
HKEY_CURRENT_USER
CurrentUser
HKEY_LOCAL_MACHINE
LocalMachine
HKEY_USERS
Users
HKEY_CURRENT_CONFIG
CurrentConfig
HKEY_DYN_DATA
DynData
HKEY_PERFORMANCE_DATA
PerformanceData
然后,就用上面初始化后的对象,来操作注册表子键。
以下就举几个常用的用例。
第一, 枚举某个子键的所含子项以及子键的值;
RegistryKey rkLocalM = Registry.LocalMachine;
const string strSubKey = @"SOFTWARE\ODBC\ODBCINST.INI\Microsoft Access Driver (*.mdb)";
RegistryKey rkSub = rkLocalM.OpenSubKey( strSubKey );
// Get sub keys
string[] strSubKeys = rkSub.GetSubKeyNames();
for( int i = 0; i < strSubKeys.Length; i++ )
Debug.WriteLine( strSubKeys[i] );
// Get data name and its value
string[] strData = rkSub.GetValueNames();
for( int i = 0; i < strData.Length; i++ )
{
Debug.WriteLine( string.Format( "{0}:{1}", strData[i],
rkSub.GetValue( strData[i] ) ) );
}
rkLocalM.Close();
第二, 创建子项;
RegistryKey rkLocalM = Registry.LocalMachine;
const string strSubKey = @"SOFTWARE\ODBC\ODBCINST.INI\Microsoft Access Driver (*.mdb)";
RegistryKey rkSub = rkLocalM.OpenSubKey( strSubKey, true );
rkSub.SetValue( "Test", "Test" );//The type of value according value itself
rkLocalM.Close();
第三, 删除子项;
RegistryKey rkLocalM = Registry.LocalMachine;
const string strSubKey = @"SOFTWARE\ODBC\ODBC.INI\DBNewTest";
RegistryKey rkSub = rkLocalM.OpenSubKey( strSubKey, true );
rkSub.DeleteValue( "DriverID", false );
rkLocalM.Close();
第四, 添加某个子键的值;
RegistryKey rkLocalM = Registry.LocalMachine;
const string strSubKey = @"SOFTWARE\ODBC\ODBC.INI\DBNewTest\Test";
RegistryKey rkSub = rkLocalM.CreateSubKey( strSubKey );
rkLocalM.Close();
第五, 删除某个子键的值;
RegistryKey rkLocalM = Registry.LocalMachine;
const string strSubKey = @"SOFTWARE\ODBC\ODBC.INI\DBNewTest";
RegistryKey rkSub = rkLocalM.OpenSubKey( strSubKey, true );
rkSub.DeleteSubKey( "Test", false );
rkLocalM.Close();
第六, 删除某个子键下所有子键和子项;
RegistryKey rkLocalM = Registry.LocalMachine;
const string strSubKey = @"SOFTWARE\ODBC\ODBC.INI";
RegistryKey rkSub = rkLocalM.OpenSubKey( strSubKey, true );
rkSub.DeleteSubKeyTree( "DBNewTest");
rkLocalM.Close();
其实用到最多的是OpenSubKey,要注意的是,如果要相对子键进行操作的话,一定要加上“true”这个值,以标明对当前打开的子键能具有可写的能力。否则,默认打开的方式,是不具有可写的能力,这样对待子项进行添加、删除以及修改等操作,会出现异常
读取
首先引用 ing System.Management; //取CPU号
public string GetCpuID()
{
try
{
ManagementClass mc = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = mc.GetInstances();string strCpuID = null ;
foreach( ManagementObject mo in moc )
{
strCpuID = mo.Properties["ProcessorId"].Value.ToString();
break;
}
return strCpuID;
}
catch
{
return "";
}
}//取第一块硬盘号
public string GetHardDiskID()
{
ManagementClass mc=new ManagementClass("Win32_DiskDrive");
string returnstr = "";
foreach(ManagementObject mb in mc.GetInstances())
{
returnstr = mb.Properties["PNPDeviceID"].Value.ToString();
if(returnstr != "") break;
}
return returnstr;
}//end //取第一块网卡号
public string GetNetworkID()
{
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration");
string strNetworkID = null ;
foreach(ManagementObject mo in searcher.Get())
{
strNetworkID = mo["MACAddress"].ToString().Trim();
if(strNetworkID != "")
{
break;
}
}
return strNetworkID ;
}
catch
{
return "";
}
}//end //取串口
public int getport(int portnum)
{
//链接服务器
DirectoryEntry root = new DirectoryEntry("IIS://localhost/W3SVC");
//检测是否已存在相同串口的站点,并获取PORT值
foreach(DirectoryEntry e in root.Children)
{
if(e.SchemaClassName == "IIsWebServer")
{
if(e.Properties["ServerBindings"].Value != null)
{
int strstart = e.Properties["ServerBindings"].Value.ToString().IndexOf(":",0);
int strend = e.Properties["ServerBindings"].Value.ToString().IndexOf(":",strstart+1);
string thisport = e.Properties["ServerBindings"].Value.ToString().Substring((strstart+1),(strend-strstart-1));
if(thisport == portnum.ToString())
{
portnum++;
portnum = getport(portnum);
break;
}
}
}
}
return portnum;
} //以下示例说明如何从 HKEY_CURRENT_USER 读取一个 DWORD 值:
using Microsoft.Win32;
RegistryKey regVersion = new RegistryKey();
string keyValue = "Software\\Microsoft\\TestApp\\1.0"; //此处你在注册表HKEY_CURRENT_USER中选一个就是了
regVersion = Registry.CurrentUser.OpenSubKey(keyValue,false);
int intVersion = 0;
if(regVersion != null)
{
intVersion = regVersion.GetValue("Version",0);
regVersion.Close();
}//以下示例读取并递增一个 DWORD 值,然后将其写入 HKEY_CURRENT_USER:
RegistryKey regVersion = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\TestApp\\1.0", true);
if(regVersion != null)
{
// Key doesn't exist; create it.
regVersion =
Registry.CurrentUser.CreateSubKey("SOFTWARE\\Microsoft\\TestApp\\1.0");
}int intVersion = 0;
if(regVersion != null)
{
intVersion = regVersion.GetValue("Version", 0);
intVersion = intVersion + 1;
regVersion.SetValue("Version", intVersion);
regVersion.Close();
}参考,msdn帮助上有的 一般的可解的加密。。/// <summary>
/// 加密函数,输出加密过后的字符串
/// </summary>
/// <param name="Str">为要加密的字符串</param>
/// <returns>加密过的字符串</returns>
public static string Encrypt(string Str)
{
System.Web.Security.FormsAuthenticationTicket ticket1 = new System.Web.Security.FormsAuthenticationTicket(Str,false,1);
return System.Web.Security.FormsAuthentication.Encrypt(ticket1);
}/// <summary>
/// Encrypt的解密函数
/// </summary>
/// <param name="Str">要解密的字符串</param>
/// <returns>返回解密过的字符串</returns>
public static string Decrypt(string Str)
{
System.Web.Security.FormsAuthenticationTicket ticket1 = System.Web.Security.FormsAuthentication.Decrypt(Str);
return ticket1.Name;
}
C#播放声音和FLASH
一、在C#播放声音
新建一个C#的Windows Form工程(Windows应用程序),并且定义两个菜单按钮(menuItem1,menuItem2)。
选择菜单中的“工具”中的“自定义工具箱(添加/移除工具箱项)”,在自定义工具箱的窗口中,点击展开“COM 组件”项,选中“Window Media Player”选项。确定后在“工具箱”中便会出现“Windows Media Player”这一项,然后再将其拖至Form上,调整大小,系统在“引用”中自动加入了对此dll的引用,AxMediaPlayer就是我们使用的Namespace与class。
在属性栏中设置好此控件的一些属性,为了方便,这里我把AutoStart设置成为true(其实默认是true),只要FileName被设置(打开了文件),则文件将会自动播放。完整代码如下:
private void menuItem1_Click(object sender, System.EventArgs e)
{
OpenFileDialog ofDialog = new OpenFileDialog();
ofDialog.AddExtension = true;
ofDialog.CheckFileExists = true;
ofDialog.CheckPathExists = true;
//the next sentence must be in single line
ofDialog.Filter = "VCD文件(*.dat)|*.dat|Audio文件(*.avi)|*.avi
|WAV文件(*.wav)|*.wav|MP3文件(*.mp3)|*.mp3|所有文件 (*.*)|*.*";
ofDialog.DefaultExt = "*.mp3";
if(ofDialog.ShowDialog() == DialogResult.OK)
{
// 2003一下版本 方法 this.axMediaPlayer1.FileName = ofDialog.FileName;
this.axMediaPlayer1.URL= ofDialog.FileName;//2005用法
}
}
这里使用的是微软的播放器,大家也可以试试Winamp的控件,如果你只需要播放声音而不需要显示,你只要把AxMediaPlayer的Visible属性设置为false就可以了。
二、播放Flash动画
播放Flash动画的原理与声音差不多,也是直接引用Flash的dll,不过这个dll不能直接在“COM 组件”窗口中找到,需要我们手动添加,选择菜单中的“工具”--“自定义工具箱”,打开“自定义工具箱”窗口,在“COM 组件”中点击“浏览”键,然后选择“c:\\WINNT(WINDOWS)\\system32\\MacromedFlashswflash.ocx"控件,确定后在工具箱中就可以看到“FlashFactory”,“ShockwaveFlash”两个新控件,我们需要使用的是“ShockwaveFlash”,将其拖到新建的Form上,然后再设置一些属性即可。
下面是简单的操作代码,即打开swf文件,并播放它:
private void menuItem2_Click(object sender, System.EventArgs e)
{
OpenFileDialog ofDialog = new OpenFileDialog();
ofDialog.AddExtension = true;
ofDialog.CheckFileExists = true;
ofDialog.CheckPathExists = true;
ofDialog.Filter = "swf 文件 (*.swf)|*.swf|所有文件 (*.*)|*.*";
ofDialog.DefaultExt = "mp3";
if(ofDialog.ShowDialog() == DialogResult.OK)
{
this.axShockwaveFlash1.Movie = ofDialog.FileName;
this.axShockwaveFlash1.Play();
}
}
Visual Studio .Net以前的版本,要对注册表进行修改,则需要调用系统API,而现在则不用那么麻烦,因为.Net已经把注册表相关的操作封装到一个类中,调用的时候只要只要调用此类对象相应的属性或方法即可。
以下就注册表这个类进行说明。
首先,要引入注册类所在的nampespace,如下:
接下来就是对注册表的操作,则第一步要像以前操作的那样,需要设定注册表的位置,例如:
RegistryKey rkLocalM = Registry.LocalMachine;
而注册表各个根的具体对应如下:
HKEY_CLASSES_ROOT
ClassesRoot
HKEY_CURRENT_USER
CurrentUser
HKEY_LOCAL_MACHINE
LocalMachine
HKEY_USERS
Users
HKEY_CURRENT_CONFIG
CurrentConfig
HKEY_DYN_DATA
DynData
HKEY_PERFORMANCE_DATA
PerformanceData
然后,就用上面初始化后的对象,来操作注册表子键。
以下就举几个常用的用例。
第一, 枚举某个子键的所含子项以及子键的值;
RegistryKey rkLocalM = Registry.LocalMachine;
const string strSubKey = @"SOFTWARE\ODBC\ODBCINST.INI\Microsoft Access Driver (*.mdb)";
RegistryKey rkSub = rkLocalM.OpenSubKey( strSubKey );
// Get sub keys
string[] strSubKeys = rkSub.GetSubKeyNames();
for( int i = 0; i < strSubKeys.Length; i++ )
Debug.WriteLine( strSubKeys[i] );
// Get data name and its value
string[] strData = rkSub.GetValueNames();
for( int i = 0; i < strData.Length; i++ )
{
Debug.WriteLine( string.Format( "{0}:{1}", strData[i],
rkSub.GetValue( strData[i] ) ) );
}
rkLocalM.Close();
第二, 创建子项;
RegistryKey rkLocalM = Registry.LocalMachine;
const string strSubKey = @"SOFTWARE\ODBC\ODBCINST.INI\Microsoft Access Driver (*.mdb)";
RegistryKey rkSub = rkLocalM.OpenSubKey( strSubKey, true );
rkSub.SetValue( "Test", "Test" );//The type of value according value itself
rkLocalM.Close();
第三, 删除子项;
RegistryKey rkLocalM = Registry.LocalMachine;
const string strSubKey = @"SOFTWARE\ODBC\ODBC.INI\DBNewTest";
RegistryKey rkSub = rkLocalM.OpenSubKey( strSubKey, true );
rkSub.DeleteValue( "DriverID", false );
rkLocalM.Close();
第四, 添加某个子键的值;
RegistryKey rkLocalM = Registry.LocalMachine;
const string strSubKey = @"SOFTWARE\ODBC\ODBC.INI\DBNewTest\Test";
RegistryKey rkSub = rkLocalM.CreateSubKey( strSubKey );
rkLocalM.Close();
第五, 删除某个子键的值;
RegistryKey rkLocalM = Registry.LocalMachine;
const string strSubKey = @"SOFTWARE\ODBC\ODBC.INI\DBNewTest";
RegistryKey rkSub = rkLocalM.OpenSubKey( strSubKey, true );
rkSub.DeleteSubKey( "Test", false );
rkLocalM.Close();
第六, 删除某个子键下所有子键和子项;
RegistryKey rkLocalM = Registry.LocalMachine;
const string strSubKey = @"SOFTWARE\ODBC\ODBC.INI";
RegistryKey rkSub = rkLocalM.OpenSubKey( strSubKey, true );
rkSub.DeleteSubKeyTree( "DBNewTest");
rkLocalM.Close();
其实用到最多的是OpenSubKey,要注意的是,如果要相对子键进行操作的话,一定要加上“true”这个值,以标明对当前打开的子键能具有可写的能力。否则,默认打开的方式,是不具有可写的能力,这样对待子项进行添加、删除以及修改等操作,会出现异常