读取
首先引用  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(); 

            
forint i = 0; i < strSubKeys.Length; i++ ) 

                Debug.WriteLine( strSubKeys[i] ); 

  

            
// Get data name and its value 

            
string[] strData = rkSub.GetValueNames(); 

            
forint 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”这个值,以标明对当前打开的子键能具有可写的能力。否则,默认打开的方式,是不具有可写的能力,这样对待子项进行添加、删除以及修改等操作,会出现异常
 

相关文章: