社区
Windows SDK/API
帖子详情
用哪个函数可以读到主板bios上的信息?
wvvw
2004-11-01 09:57:27
在c#里头,我在wmi里找到了一个win32_bios找到我要的信息,但由于用.net都要安装framework,所以考虑用delphi来做,请各位帮帮忙。。
...全文
275
5
打赏
收藏
用哪个函数可以读到主板bios上的信息?
在c#里头,我在wmi里找到了一个win32_bios找到我要的信息,但由于用.net都要安装framework,所以考虑用delphi来做,请各位帮帮忙。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wvvw
2004-11-01
打赏
举报
回复
ksaiy(消失在人海)
能不能把程序给全呢??
jinjazz
2004-11-01
打赏
举报
回复
http://www.applevb.com/sourcecode/ssystem.htm
里面有一个wmi的例子
ksaiy
2004-11-01
打赏
举报
回复
你需要哪些信息啊?
下面的代码能取这些东东:
WIN2000下:
BIOS 版本: Phoenix-Award BIOS v6.00PG
BIOS 版权信息: Copyright (C) 2002, Phoenix Technologies, LTD
BIOS 日期: 07/05/02
名称: 82845GL INTEL BIOS V1.1 Jul.17,2002
主板序列号: 07/05/2002-i845-W83627-6A69VQ1GC-00
串口 1 输入/输出范围: 3F8
串口 2 输入/输出范围: 2F8
串口 3 输入/输出范围: 0
串口 4 输入/输出范围: 0
并口 1 输入/输出范围: 378
并口 2 输入/输出范围: 0
并口 3 输入/输出范围: 0
98下可以直接用形如 StrPas(PChar(Ptr($FFFF5))) 取得,2000下因为权限的问题,不能直接访问
下面的程序可以直接读取物理内存,取出相应的信息
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Aclapi, Accctrl, StdCtrls;
type
TMainForm = class(TForm)
InfoMemo: TMemo;
btGetInfo: TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure btGetInfoClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
PUnicodeString = ^TUnicodeString;
TUnicodeString = packed record
Length: Word;
MaximunLength: Word;
Buffer: PWideChar;
end;
NTSTATUS = Integer;
PObjectAttributes = ^TObjectAttributes;
TObjectAttributes = packed record
Length: DWORD;
RootDirectory: THandle;
ObjectName: PUnicodeString;
Attributes: DWORD;
SecurityDescriptor: PSecurityDescriptor;
SecurityQualityOfService: PSecurityQualityOfService;
end;
TZwOpenSection = function(var SectionHandle: THandle; DesireAccess: ACCESS_MASK;
var ObjectAttributes: TObjectAttributes): NTSTATUS; stdcall;
TZwClose = procedure(SectionHandle: THandle); stdcall;
TRtlInitUnicodeString = procedure(var DestinationString: TUnicodeString;
vSourceString: WideString); stdcall;
const
STATUS_SUCCESS = NTSTATUS(0);
STATUS_INVALID_HANDLE = NTSTATUS($C0000008);
STATUS_ACCESS_DENIED = NTSTATUS($C0000022);
OBJ_INHERIT = $00000002;
OBJ_PERMANENT = $00000010;
OBJ_EXCLUSIVE = $00000020;
OBJ_CASE_INSENSITIVE = $00000040;
OBJ_OPENIF = $00000080;
OBJ_OPENLINK = $00000100;
OBJ_KERNEL_HANDLE = $00000200;
OBJ_VALID_ATTRIBUTES = $000003F2;
ObjectPhysicalMemoryDeviceName = '\Device\Physicalmemory';
NTDLL = 'ntdll.dll';
var
ZwOpenSection: TZwOpenSection;
ZwClose: TZwClose;
RtlInitUnicodeString: TRtlInitUnicodeString;
var
MainForm: TMainForm;
NtLayer: HMODULE;
implementation
{$R *.dfm}
function NT_SUCCESS(var Status: LongInt): Boolean;
begin
Result:=LongInt(Status) >= 0;
end;
procedure InitializeObjectAttributes(var p: TObjectAttributes; n: PUnicodeString;
a: DWORD; r: THandle; s: PSecurityDescriptor);
begin
p.Length:=SizeOf(TObjectAttributes);
p.RootDirectory:=r;
p.Attributes:=a;
p.ObjectName:=n;
p.SecurityDescriptor:=s;
p.SecurityQualityOfService:=Nil;
end;
function SetPhysicalMemorySectionCanBeWrited(hSection: THandle): Boolean;
var
pDacl: PACL;
pNewDacl: PACL;
pSD: PPSECURITY_DESCRIPTOR;
dwRes: Cardinal;
ea: EXPLICIT_ACCESS_A;
label CleanUp;
begin
Result:=False;
pDacl:=Nil;
pNewDacl:=Nil;
pSD:=Nil;
dwres:=GetSecurityInfo(hSection,SE_KERNEL_OBJECT,DACL_SECURITY_INFORMATION,nil,
nil,@pDacl,nil,pSD);
try
if dwres<>ERROR_SUCCESS then
Exit;
FillChar(ea,SizeOf(EXPLICIT_ACCESS),0);
ea.grfAccessPermissions:=SECTION_MAP_WRITE;
ea.grfAccessMode:=GRANT_ACCESS;
ea.grfInheritance:=NO_INHERITANCE;
ea.Trustee.TrusteeForm:=TRUSTEE_IS_NAME;
ea.Trustee.TrusteeType:=TRUSTEE_IS_USER;
ea.Trustee.ptstrName:='CURRENT_USER';
SetEntriesInAcl(1,@ea,Nil,pNewDacl);
dwRes:=SetSecurityInfo(hSection,SE_KERNEL_OBJECT,DACL_SECURITY_INFORMATION,
Nil,Nil,pNewDacl,Nil);
if dwRes=ERROR_SUCCESS then
Exit;
Result:=True;
finally
if pSD<>Nil then
LocalFree(Cardinal(pSD^));
if pNewDacl<>Nil then
LocalFree(Cardinal(pSD^));
end;
end;
function OpenPhysicalMemory(ReadOrNot: Boolean): THandle;
var
Status: NTSTATUS;
PhysMem: THandle;
PhysMemString: TUnicodeString;
Attributes: TObjectAttributes;
SectionAttrib: Integer;
PhysMemName: WideString;
begin
Result:=0;
PhysMemName:=ObjectPhysicalMemoryDeviceName;
RtlInitUnicodeString(PhysMemString,PhysMemName);
InitializeObjectAttributes(Attributes,@PhysMemString,OBJ_CASE_INSENSITIVE
or OBJ_KERNEL_HANDLE,0,Nil);
wvvw
2004-11-01
打赏
举报
回复
加分一下。
用bioshelp.pas里给的例子,我需要的主板序列号出不来。
ksaiy(消失在人海) ,能不能将一下怎么调用你程序里的那些函数?
ly_liuyang
2004-11-01
打赏
举报
回复
Google上找Bioshelp.pas就OK了
http://lysoft.7u7.net
获取
主板
BIOS
的
信息
[转]
本文介绍了如何获取
主板
BIOS
的
信息
,包括读取
主板
序列号、AWard
BIOS
密码、
BIOS
信息
和
BIOS
日期。提供了Delphi语言的实现代码,涵盖了从内存读取到使用16位COM程序的方法。
全面掌握Windows系统下
主板
BIOS
信息
获取方法
在IT领域,获取
主板
BIOS
信息
是诊断和维护硬件的常规需求。本文详细介绍了在Windows 98、2000和XP系统中,通过系统
信息
工具、设备管理器、命令行指令及第三方软件等方式获取
BIOS
信息
的方法,还强调了操作
BIOS
设置时的注意事项。
华硕
主板
在线升级
BIOS
详细指南
本文介绍了华硕
主板
在线升级
BIOS
的详细步骤。先做好准备工作,包括确认
主板
型号、访问官网下载
BIOS
文件、准备U盘;接着进入
BIOS
设置界面;再用ASUS EZ Flash 3 Utilities更新。同时提醒备份数据、选对文件、避免断电等注意事项,助用户顺利完成更新。
bios
更新工具_5分钟教会您升级
bios
主板
,华硕
主板
BIOS
教程
本文主要介绍了华硕
主板
BIOS
的升级方法。先说明了最新
BIOS
的好处,接着阐述查看
主板
型号及
BIOS
的方法,然后介绍在官网下载
BIOS
固件并放入FAT32格式U盘的步骤,最后分别讲解了在Windows系统和
BIOS
中刷
BIOS
升级的具体操作。
华硕
主板
BIOS
设置图解教程
本文提供详细的华硕
主板
BIOS
设置图解教程。介绍了进入
BIOS
的方法,包括EZ模式与高级模式的切换,阐述了两种模式主界面及高级模式主菜单。还说明了设置语言为简体中文的操作,以及设置U盘启动的步骤,强调合理设置
BIOS
对电脑性能和稳定性的重要性。
Windows SDK/API
1,184
社区成员
22,326
社区内容
发帖
与我相关
我的任务
Windows SDK/API
Delphi Windows SDK/API
复制链接
扫一扫
分享
社区描述
Delphi Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章