`
leonardleonard
  • 浏览: 821616 次
社区版块
存档分类
最新评论

C#实现光盘做启动盘

阅读更多
一 :编程思想
1、创建启动盘
插入要创建的启动盘,程序自动检测光驱中光盘,利用WMI(Windows管理架构:Windows Management Instrumentation)读取该光盘的序列号(具有唯一性),把该序列号写入注册表。
2、验证
程序执行时,自动检测光驱中的光盘,利用WMI获取序列号,然后读取注册表中先前写入的序列号,二者比较,相同则程序启动成功,否则提示插入启动盘。
二 :相关知识
1、 什么是WMI?
WMI(Windows管理架构:Windows Management Instrumentation)是Microsoft基于Web的企业管理(WBEM)和 Desktop Management Task Force(DMTF)工业标准的实现. 就是一种基于标准的系统管理的开发接口,这组接口用来控制管理计算机. 它提供了一种简单的方法来管理和控制系统资源.如果你想深入了解他,可以参考Micorosft Platform SDK . 在这我们只是通过它实现一个简单的功能, 得到我们系统中光盘的相关信息.[ 我们需要使用System.Management名字空间下提供的类来实现.]。
2、 如何在C#中操作注册表
使用VC,VB等语言操作注册表的例子已经有很多了,其实在C#里操作注册表更加的简单方便。下面的例子就提供了在C#里操作注册表的方法:
using Microsoft.Win32;
using System.Diagnostics;
private void Access_Registry()
{
// 在HKEY_LOCAL_MACHINE\Software下建立一新键,起名为CDDriveSn
RegistryKey key = Registry.LocalMachine.OpenSubKey("Software", true);
// 增加一个子键
RegistryKey newkey = key.CreateSubKey("CDDriveSn");
// 设置此子键的值
newkey.SetValue("CDDriveSn", "123456789");
// 从注册表的其他地方获取数据
// 找出你的CPU
RegistryKey pRegKey = Registry.LocalMachine;
pRegKey= pRegKey.OpenSubKey("HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0");
Object val = pRegKey.GetValue("VendorIdentifier");
Debug.WriteLine("The central processor of this machine is:"+ val);
// 删除键值
RegistryKey delKey = Registry.LocalMachine.OpenSubKey("Software", true);
delKey.DeleteSubKey("CDDriveSn");
}
三、编写代码如下
创建启动盘

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Management;
using System.Diagnostics;
using Microsoft.Win32;

namespace AT_RegCDRom
{
///
/// Form1 的摘要说明。
///
public class Form1 : System.Windows.Forms.Form
{
///
/// 必需的设计器变量。
///
private System.ComponentModel.Container components = null;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button button1;
private static string cdRomSn;

public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();

//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}

///
/// 清理所有正在使用的资源。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows 窗体设计器生成的代码
///
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
///
private void InitializeComponent()
{
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Form1));
this.label1 = new System.Windows.Forms.Label();
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// label1
//
this.label1.Location = new System.Drawing.Point(72, 16);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(144, 24);
this.label1.TabIndex = 0;
this.label1.Text = "点击开始进行光盘注册";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// button1
//
this.button1.Location = new System.Drawing.Point(104, 56);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(72, 24);
this.button1.TabIndex = 1;
this.button1.Text = "开始注册";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(280, 101);
this.Controls.Add(this.button1);
this.Controls.Add(this.label1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.Name = "Form1";
this.Text = "光盘注册";
this.ResumeLayout(false);

}
#endregion

///
/// 应用程序的主入口点。
///
[STAThread]
static void Main()
{
Application.Run(new Form1());
}

///
/// 读取光盘相关信息并进行注册。
///
public void ReadCDRom()
{
//创建获取光盘信息对象
ManagementClass driveClass = new ManagementClass("Win32_CDROMDrive");

      //返回该类的所有实例的集合    
ManagementObjectCollection drives = driveClass.GetInstances();
      
//设置状态标志位初始化为false
bool status = false;

//查询所有的光驱
foreach (ManagementObject drv in drives)
{
try
{
//优先获取第一个有光盘的光驱中光盘的序列号
if(drv["VolumeSerialNumber"].ToString()!="")
{
cdRomSn = drv["VolumeSerialNumber"].ToString();
status=true;
//查询结束
break;
}

}
catch
{
//出现异常

status=false;

continue;
}

}


if(status)
{
//开始注册
if(RegCDRomSn(cdRomSn))
{
this.label1.Text = "注册成功!";
this.button1.Text = "关闭";
}
else
{
this.label1.Text = "注册失败!";
this.button1.Text = "关闭";
}

}
else
{
// Initializes the variables to pass to the MessageBox.Show method.

string message = "请插入要注册的启动光盘!";
string caption = "光盘注册";
MessageBoxButtons buttons = MessageBoxButtons.OKCancel;
DialogResult result;

// Displays the MessageBox.

result = MessageBox.Show(this, message, caption, buttons,
MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
if(result==DialogResult.OK)
{
ReadCDRom();
}
else
{
Application.Exit();
}

}

driveClass.Dispose();

}
///
/// 把信息写入注册表。
///
public bool RegCDRomSn(string sn)
{
try
{
// 在HKEY_LOCAL_MACHINE\Software下建立一新键,起名为CDDriveSn
RegistryKey key = Registry.LocalMachine.OpenSubKey("Software", true);
// 增加一个子键
RegistryKey newkey = key.CreateSubKey("CDDriveSn");
// 设置此子键的值
newkey.SetValue("CDDriveSn", sn);
// 成功返回true
return true;

}
catch
{
// 出现异常返回false
return false;
}

}

private void button1_Click(object sender, System.EventArgs e)
{
if(this.button1.Text == "开始注册")
{
this.button1.Text = "取消注册";
   ReadCDRom();

}
else
{
Application.Exit();
}

}
}

 
分享到:
评论

相关推荐

    c# 光盘刻录源码 调用系统api 光盘刻录

    在C#中实现光盘刻录,通常会涉及到调用系统API,这允许开发者直接与操作系统底层交互,以完成特定任务。下面我们将详细讨论如何在C#中使用系统API进行光盘刻录。 首先,我们需要了解C#中调用系统API的基本方法。在...

    C# 为光盘添加AutoRun.ini自动运行功能

    C# 为光盘添加AutoRun.ini自动运行功能 C#为光盘添加自动运行功能,将添加一个AutoRun.ini的文件在程序目录中,高手请跳过,这个是为C#入门者准备的简单实例,功能与开机启动有些差别。

    C#开发典型模块大全(光盘)

    第1章 认识C#及开发环境 1.1 C#概述 1.1.1 C#发展历程 1.1.2 C#语言编程环境 1.2.NETFramework2.0简介 1.2.1 什么是.NETFramework2.0 1.2.2.NETFramework2.0特性 1.3 安装集成开发环境VisualStudio2005 1.3.1 安装...

    C#示例(配套光盘源码)第四部分

    实例064 开机启动项管理 224 实例065 显示器控制 228 实例066 屏幕放大镜 231 实例067 身份证号码验证工具 233 第7章 文件及数据流应用 实例068 文件批量更名 241 实例069 分割与合成文件 244 实例...

    超级好用的制作u盘启动盘工具

    传统的启动盘通常是软盘或光盘,随着技术的发展,现在更多使用USB闪存驱动器作为启动盘。它们在没有硬盘或硬盘出现问题时,可以用来启动电脑,并且可以加载操作系统进行安装或修复。制作启动盘的主要目的是为了在...

    C#示例(配套光盘源码)第一部分

    实例064 开机启动项管理 224 实例065 显示器控制 228 实例066 屏幕放大镜 231 实例067 身份证号码验证工具 233 第7章 文件及数据流应用 实例068 文件批量更名 241 实例069 分割与合成文件 244 实例...

    C#程序开发范例宝典光盘内容

    《C#程序开发范例宝典》是一本深入探讨C#编程语言的实用书籍,其光盘内容通常包含了丰富的实例代码、项目模板以及可能的补充资料。这些资源旨在帮助开发者更好地理解和应用C#进行软件开发,提升编程技能。在本文中,...

    C#示例(配套光盘源码)第五部分

    实例064 开机启动项管理 224 实例065 显示器控制 228 实例066 屏幕放大镜 231 实例067 身份证号码验证工具 233 第7章 文件及数据流应用 实例068 文件批量更名 241 实例069 分割与合成文件 244 实例...

    C#检测光盘弹入弹出

    在C#编程中,检测光盘的弹入和弹出主要涉及到系统事件监听和设备管理。这个任务可以通过Windows API(应用程序接口)调用来实现,尤其是使用`WMI(Windows Management Instrumentation)`来监控系统硬件事件。下面...

    C#示例(配套光盘源码)第二部分

    实例064 开机启动项管理 224 实例065 显示器控制 228 实例066 屏幕放大镜 231 实例067 身份证号码验证工具 233 第7章 文件及数据流应用 实例068 文件批量更名 241 实例069 分割与合成文件 244 实例...

    C#示例(配套光盘源码)第三部分

    实例064 开机启动项管理 224 实例065 显示器控制 228 实例066 屏幕放大镜 231 实例067 身份证号码验证工具 233 第7章 文件及数据流应用 实例068 文件批量更名 241 实例069 分割与合成文件 244 实例...

    自动启动多媒体光盘程序

    标题中的“自动启动多媒体光盘程序”指的是在计算机中放入含有特定程序的多媒体光盘时,光盘能够自动运行其内置的应用程序,无需用户手动操作。这种功能在早期的计算机应用中常见,如安装盘、教学软件等。下面将详细...

    C#开发典型模块大全

    第1章 认识C#及开发环境 1.1 C#概述 2 1.1.1 C#发展历程 2 1.1.2 C#语言编程环境 2 1.2 .NET Framework 2.0简介 2 1.2.1 什么是.NET Framework 2.0 2 1.2.2 .NET Framework 2.0特性 3 1.3 安装集成...

    C#调用Nero SDK刻录光盘的方法

    本文实例讲述了C#调用Nero SDK刻录光盘的方法。分享给大家供大家参考。具体如下: 项目中有多光驱刻录的需求,但在一个进程里同时启动多个刻录任务,进程经常报异常,于是把刻录部分单独做了个控制台程序,每个光驱...

    c#宾馆管理系统实现—功能全

    c#宾馆管理系统实现—功能全 下面是在简体中文Microsoft Windows Server 2003(SP1)/Microsoft Office 2003(SP2)/ Microsoft SQL Server 2005/Microsoft Visual Studio 2005环境中配置《宾馆酒店管理系统》数据库及...

    刻录光盘资料.zip

    这个压缩包中的资料可能是对以上知识点的详细讲解,或者是提供了一段实际的C#代码示例,帮助开发者理解如何在实践中实现光盘刻录。对于想要学习或改进这方面技能的人来说,这是一个宝贵的资源。

    C#检测pc光驱里是否插入了光盘的方法

    在C#编程中,检测PC光驱是否插入了光盘通常涉及到对系统硬件状态的监控。这个过程可以通过Windows Management Instrumentation(WMI)来实现,这是一个强大的工具,允许开发者访问和管理系统的各种信息,包括硬件...

    C#经验技巧宝典1-5

    0009 设置Windows应用程序启动窗体 5 0010 设置Web应用程序起始页 5 0011 如何设置程序的出错窗口 5 0012 如何进行程序调试 6 0013 如何结束不能正常运行的程序 6 0014 如何锁定窗体中的控件 6 ...

    C#开发经验技巧宝典

    1074 C#如何检测SQL是否启动 649 1075 如何启动IIS的默认SMTP服务器 650 1076 如何暂停IIS的默认SMTP服务器 650 1077 如何继续IIS的默认SMTP服务器 651 1078 如何停止IIS的默认SMTP服务器 651 24.2 网络...

    光盘纸袋打印程序

    至于"CDPaper.exe",这是程序的可执行文件,用户双击这个文件就能启动光盘纸袋打印程序。在运行之前,确保计算机已连接了合适的打印机,因为该程序的主要任务就是将设计好的光盘纸袋图案输出到纸上。同时,为了获得...

Global site tag (gtag.js) - Google Analytics