在WIN2000中怎么去写一个程序在程序里安装驱动程序啊!急啊!

解决方案 »

  1.   

    <<Delphi 下深入windows核心编程>>
    第4章  低层操作
    Windows NT2000变速齿轮这个是最常见的例子
      

  2.   

    现在我有个usb设备,我希望在我安装应用程序的同事把驱动程序也安装到系统中怎么实现啊?高手指教
      

  3.   

    up~我也遇到同样的问题,安装程序的时候同时安装一个虚拟打印机。虚拟打印机驱动已经有了,但不知道怎么安装?
    好象这么写:
    rundll32.exe setupapi,InstallHinfSection Wdm1.Install.NTx86 128 d:\ac\InsNt.inf 
    你可以在msdn中搜一下 InstallHinfSection 的说明
      

  4.   

    procedure InstallPortTalkDriver;
    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;