プリンタドライバを追加するには

解決


くまりす  2004-01-25 23:03:26  No: 81759  IP: [192.*.*.*]

はじめて質問させていただきます。くまりすです。

わたしは、WMIのWin32_PrinterDriverを使用して、プリンタドライバを
インストールしようとしています。
ですが、デジタル署名されていないドライバをインストールすると失敗します。Retの値が0であれば成功なのですが、この場合、マイナスの値が戻されます。
ご存知であれば、
デジタル署名のないプリンタドライバを組み込むにはどうすれば良いか
ご教授いただけないでしょうか。

Dim PrtSet As SWbemObjectSet
Dim Prt As SWbemObject
Dim Locator As SWbemLocator
Dim Service As SWbemServices
Dim Ret As Long

Set Locator = New WbemScripting.SWbemLocator
Set Service = Locator.ConnectServer
Set Prt = Service.Get("Win32_PrinterDriver")

Prt.Name = "Canon LASER SHOT LBP-1810"
Prt.SupportedPlatform = "Windows NT x86"
Prt.Version = "3"
Prt.FilePath = "C:\driver"
Prt.Infname = "C:\driver\W2KXPLS4.INF"

Ret = Prt.AddPrinterDriver(Prt)    ←ここで失敗する。

編集 削除
岡田 之仁  2004-01-26 07:24:12  No: 81760  IP: [192.*.*.*]

対象OSは、何でしょうか?

マイクロソフトでは・・・
http://www.microsoft.com/japan/technet/treeview/default.asp?url=/japan/technet/scriptcenter/printing/default.asp

ここに各種の記述がありますが・・・

※  ホームページの記述自体では、Win2000も対象ですが、
    ドライバのインストールで、
Drivers.cab に含まれていないプリンタ ドライバのインストール
    では、対象はあくまで、Win2000以外になっています。

※  全然別の内容ですが・・・
    テスト印字を、WMI経由で行った場合、WMI経由では、セキュリティ
    の関係とプリンタードライバーのバグで、失敗してしまうと言う
    バグ報告があります。
    あくまでプリンターメーカーの対応で修正版が出ないと、どうに
    もならない・・・

これらのことより、他のドライバーは、インストールできるようなこと
が発見されますと、キャノンの全てか、レーザーショット関係のドライ
バのみが、WMI経由でインストールできない・・・と言うこともあるか
もしれません。あくまで可能性ですが。

以上。

編集 削除
くまりす  2004-01-26 20:32:05  No: 81761  IP: [192.*.*.*]

早々のご返答ありがとうございます。

すみません!!使用OS抜けていました・・・
WindowsXPで使用しています。
Windows2000では一部サポートされていないWMIがありまして。。。

WMIは実行権限が弱いんですかねぇ・・
WMI以外で、ドライバをOS内にインストールできる術って
あるのでしょうか?(泣)
なにかこういった成功事例などありましたら、ご教授いただけないでしょうか。

編集 削除
岡田 之仁  2004-01-26 20:55:43  No: 81762  IP: [192.*.*.*]

先の書き込みでのマイクロソフトのサイトのスクリプト
では、インストールできたのでしょうか?

XPなら、できるはずですが・・・

以上。

編集 削除
くまりす  2004-02-08 11:33:44  No: 81763  IP: [192.*.*.*]

マイクロソフトのサイトのスクリプトも試したのですが、戻り値が87でエラーになってしまします・・
WindowsXPで試しました。

編集 削除
岡田 之仁  2004-02-08 20:13:14  No: 81764  IP: [192.*.*.*]

\Windows\System32\PrnDrvr.vbs でも同様ですか?
これで同じエラー(87)ならば、別の問題でインストール不能
になっていると思われます。

※  マイクロソフトのペ−ジに掲載のものは、ミスプリですネ!
    英語のページの方には、正しく掲載されていましたが・・・

以上。

編集 削除
岡田 之仁  2004-02-08 20:22:49  No: 81765  IP: [192.*.*.*]

捕捉情報・・・

PrnDrvr.vbs で、-i (OEMPRINT.INF) のパラメータを指定する
と、87のエラーが出ましたが、指定しないと、エラーしません
でした。

ご参考までに・・・

以上。

編集 削除
岡田 之仁  2004-02-09 00:39:50  No: 81766  IP: [192.*.*.*]

http://wmifun.atinfinity.net/wmisample/win32_printerdriverb.html
http://wmifun.atinfinity.net/wmisample/win32_printerb.html

ここに、そのものズバリのサンプルがありました。

ご参考までに。

以上。

編集 削除
くまりす  2004-02-11 23:56:21  No: 81767  IP: [192.*.*.*]

じつは・・・
上記のサンプルも試したのすがエラーになってしまいます。
当該ページの管理者へ問い合わせたところ、マイクロソフトへ
問い合わせるしかなさそうです。。。とのご回答がありました。
マイクロソフトへは、有料になるのでどうしようかと思ってます・・
もう少しがんばってみます。

編集 削除
岡田 之仁  2004-02-12 05:31:26  No: 81768  IP: [192.*.*.*]

まず環境は、WinXP と言うことですが、サービスパックは?
SP1 であれば、かなりのバグフィックスが為されております
ので・・・

あと、WMIのバージョンですが、私の環境では、V1.2です。
V1.1であれば、V1.2にした方がよいかも・・・ですが、XP
の環境で、V1.2を新たに入れた記憶が無いので、多分V1.2
だと思います。

環境の違いはその辺ですかネ〜

プリンターは、どこのメーカーの何の型式のものをWMIで
インストールしたいのでしょうか?こちらでも試してみま
すが・・・

試した結果、再度エラーになるとのこと。エラーコードは?

以上。

編集 削除
くまりす  2004-02-13 23:13:27  No: 81769  IP: [192.*.*.*]

WindowsXP-SP1です。
WMIのバージョンはどうのようにすれば確認できるのでしょうか??

プリンターはXeroxのDC400のものをインストールしようとしています。
次のドライバをダウンロードしてます。
↓FX DC 250/350/400 ART4-ADV↓
http://download.fujixerox.co.jp/docucentre/download/dc_w2kart2.html

ダウンロードされたARTフォルダをC:\に置いて下記コードで実行しています。
VB6を使用しています。
下記実行するとエラーコード(Ret)は-536870353となります。

Private Sub Command5_Click()
Dim PrtSet As SWbemObjectSet
Dim Prt As SWbemObject
Dim Locator As SWbemLocator
Dim Service As SWbemServices
Dim Ret As Long

Set Locator = New WbemScripting.SWbemLocator
Set Service = Locator.ConnectServer

Set Prt = Service.Get("Win32_PrinterDriver")

Prt.Name = "FX DC 250/350/400 ART4-ADV"
Prt.SupportedPlatform = "Windows NT x86"
Prt.Version = "3"
Prt.FilePath = "C:\ART"
Prt.Infname = "C:\ART\FXARTH.INF"

Ret = Prt.AddPrinterDriver(Prt)

If Ret = 0 Then
    MsgBox "プリンタドライバを追加しました。"
Else
    MsgBox "プリンタドライバの追加に失敗しました。"
End If

Set PrtSet = Nothing
Set Prt = Nothing
Set Locator = Nothing
Set Service = Nothing
End Sub

編集 削除
岡田 之仁  2004-02-14 01:29:31  No: 81770  IP: [192.*.*.*]

WinXP でのこちらでのエラーコードは、『87』でした。

パラメータエラーだと思われますが・・・
何故エラーするのかを、もう少し吟味してみます。

以上。

編集 削除
岡田 之仁  2004-02-14 02:12:13  No: 81771  IP: [192.*.*.*]

たまたまこんなもの見つけました・・・

http://www.dx21.com/SCRIPTING/RUNDLL32/ViewItem.ASP?OID=145&CMD=P%3DA

rundll32 printui.dll,PrintUIEntry /if /b "FX DC 250/350/400 ART4-ADV" /f K:\DOWN\DRIVERS\Printer\DocuCentre400\cswnd\ART\Win2000_XP\FXARTH.INF /r "lpt1:" /m "FX DC 250/350/400 ART4-ADV"

ネットワークプリンタになると思いますが、とりあえずこんな
パラメータ設定で、登録はできました。

ただし、ドライバーのインストール時での、ロゴテストに合格
していない由のダイアログが表示されます。

ご参考までに・・・

以上。

編集 削除
岡田 之仁  2004-02-14 03:19:58  No: 81772  IP: [192.*.*.*]

因みに・・・

あっちこっちの掲示板に投稿されていますネ!
名前も変えて・・・

さぞ困ってのことだと思いますが、
マルチポストには違いないので、自分で後始末
して下さい。

以上。

編集 削除
くまりす  2004-02-14 10:25:18  No: 81773  IP: [192.*.*.*]

早々のご返答ありがとうございます。
上記のネットワークプリンタで成功しました!!
本当にありがとうございます。

マルチポストをしてしまい、皆様に失礼なことをしてしまいました。
今後、こういった掲示書き込み際のマナーに十分に気をつけます。
その他掲示板の書き込みについて、後始末いたします。

岡田さん、ご迷惑おかけし、申し訳ありませんでした。

編集 削除
くまりす  2004-02-14 10:29:58  No: 81774  IP: [192.*.*.*]

ロゴテストに合格していないというメッセージボックスですが
※コンパネ⇒システム⇒ハードウェア⇒ドライバの署名⇒無視に設定する。
によって表示させないようにできました。
ご参考までに。

ドライバをインストールするときだけ、このメッセージが表示されないように、という方法もありますね。(セキュリティ面で少し怖いのでしないほうが良いですね)

編集 削除
岡田 之仁  2004-02-14 17:32:46  No: 81775  IP: [192.*.*.*]

一応、最終的な話として・・・

ドライバーのデジタル署名のあるなしでは、無いことが解りました。
ドライバーをインストールする際のINFファイルの構造で、マイクロ
ソフトの指定する構造を満たしていない場合、例え、インストール
が可能であっても、インストールさせる方法で、エラーは発生する
と言うことです。

マイクロソフトからは、DDKのキットに付随して、INFファイル
チェッカーなるものが別途提供されており、それで構造的要件を
満たしているか・・・をチェックできるようです。

OKIが販売しているドットプリンターのドライバーでは、デジタ
ル署名が無いにも関わらず、WMIでは、エラーもダイアログもなし
にインストールが成功・終了します。

INFファイルを見比べますと、必要と思われるセクションがゼッロクス
の方に無かったりしています。

よって、多分、INFファイルの構造的問題で、エラーしていると言う
のが、今回の結果だと思います。

他の方の為の情報として掲載しておきます。

※  これら情報は、マイクロソフトの英語版のページで検索した結果
    英語のDDK関係のページ中に存在します。
    必要な方は英語と格闘して下さい。

    ドライバー書かない方には、不必要ですが・・・

以上。

編集 削除