在WIN2000中怎么去写一个程序在程序里安装驱动程序啊!急啊!
解决方案 »
- [DCC Fatal Error] F2039 Could not create output file 'Project2.exe'
- 获取目的窗口、屏幕指定区域图像
- 设为主键好一点,还是设为UNIQUE好一点呢?
- 怎样将statusbar上的panel也根据分辨率自动调整大小?
- 关于动态创建控件的一个问题。
- 一个讨厌的问题!!!!!!!!!!!!!!
- delphi中SpeedButton怎么响应键盘!比如程序执行后,我按enter键,project中的button得到响应!
- 我是一新手,请问一个简单的问题!
- 心情好,散分拉!哈哈
- 如何使程序最小化后在屏幕右下角显示小图标?
- 难!!!难!!!如何在DBGRIDEH中的单元格中的光标位置弹出POPMENU!!!
- 请问哪种教育软件比较好?我想代理一下,中小学幼儿园等等都可以的
第4章 低层操作
Windows NT2000变速齿轮这个是最常见的例子
好象这么写:
rundll32.exe setupapi,InstallHinfSection Wdm1.Install.NTx86 128 d:\ac\InsNt.inf
你可以在msdn中搜一下 InstallHinfSection 的说明
var
SchSCManager:SC_HANDLE;
schService:SC_HANDLE;
err:DWORD;
DriverFileName:array[0..79]of CHAR;
begin
if (GetSystemDirectory(DriverFileName, 55)=0) then
begin
showmessage('PortTalk: 取System目录出错');
exit;
end; {加入驱动程序文件名}
lstrcat(DriverFileName,'\Drivers\PortTalk.sys');
showmessagefmt('PortTalk: 拷贝驱动程序到%s',[DriverFileName]); {拷贝驱动程序到System32/drivers目录,如果出错,一般是因为文件不存在。} if (not CopyFile('PortTalk.sys', DriverFileName, FALSE)) then
begin
showmessagefmt('PortTalk: 拷贝驱动程序到以下位置出错:%s'+#$D#$A+
'请手工拷贝到system32/driver目录',
[DriverFileName]);
exit;
end; {打开Service Control Manager}
SchSCManager := OpenSCManager (nil, { 机器 (nil = 本机) }
nil, { 数据库 (nil = 默认 }
SC_MANAGER_ALL_ACCESS); { 访问权 } schService := CreateService (SchSCManager, { SCManager数据库 }
'PortTalk', { 服务个数 }
'PortTalk', { 显示名 }
SERVICE_ALL_ACCESS, { 权限 }
SERVICE_KERNEL_DRIVER, { 服务类别 }
SERVICE_DEMAND_START, { 启动类别 }
SERVICE_ERROR_NORMAL, { 出错控件类别 }
'System32\Drivers\PortTalk.sys', { 服务二进制文件 }
nil, { 加入的组 }
nil, { 标识 }
nil, { 隶属 }
nil, { 本地帐户 }
nil { 密码 }
); if (schService = 0) then
begin
err := GetLastError;
if (err = ERROR_SERVICE_EXISTS) then
showmessage('PortTalk: 驱动程序不存在。')
else showmessage('PortTalk:建立服务时发生未知的错误。');
end
else showmessage('PortTalk: 成功安装!'); { 关闭Service Control Manager }
CloseServiceHandle (schService);
end;