- PR -

プリンタを共有する方法(スクリプト、コマンドにて)

1
投稿者投稿内容
トリット
会議室デビュー日: 2004/10/11
投稿数: 2
投稿日時: 2006-01-26 23:14
こんにちは。

windows2000環境にて、コマンドもしくは、スクリプトなどで、プリンタを自動で追加して、共有する方法をさがしております。

キューの追加、プリンタ作成はできるようになったのですが、共有する方法がどうしてもわかりません。
何かいい方法はないでしょうか?

ご教授のほど宜しくお願いいたします。
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2006-01-27 01:13
こんばんわ.
引用:

トリットさんの書き込み (2006-01-26 23:14) より:

キューの追加、プリンタ作成はできるようになったのですが、共有する方法がどうしてもわかりません。


net share でできませんか?
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-01-27 01:57
引用:

kazさんの書き込み (2006-01-27 01:13) より:
こんばんわ.
引用:

トリットさんの書き込み (2006-01-26 23:14) より:

キューの追加、プリンタ作成はできるようになったのですが、共有する方法がどうしてもわかりません。


net share でできませんか?




できましたっけ? NET SHARE ?

とりあえず私が知っている方法としては、

1. 「RUNDLL32.EXE printui.dll,PrintUIEntry」にて Printer Install と同時に共有

2. WMI を使って共有

2. の方法はたぶんどこにも具体的な方法が載っていないので
Source をおいておきます。

コード:
Sub SharePrinter(strPrinterName, strShareName)
    Dim objWmiService   'As WbemScripting.SWbemServices
    Dim colW32Shares    'As WbemScripting.SWbemObjectSet
    Dim objW32Share     'As WbemScripting.SWbemObject
    Dim colW32Printers  'As WbemScripting.SWbemObjectSet
    Dim objW32Printer   'As WbemScripting.SWbemObject
    Dim strQuery        'As String
    Dim lngReturn       'As Long
    
    Set objWmiService = GetObject("winmgmts:\\.\root\CIMV2")
    strQuery = "SELECT * FROM Win32_Printer WHERE DeviceID = '" & strPrinterName & "'"
    Set colW32Printers = objWmiService.ExecQuery(strQuery)
    
    If colW32Printers.Count <> 1 Then
        WScript.Echo "Printer [" & strPrinterName & "] は存在しません。"
        Exit Sub
    End If
    
    Set objW32Share = objWmiService.Get("Win32_Share")

    lngReturn = objW32Share.Create( _
        strPrinterName & ",LocalsplOnly", strShareName, 1)
    If lngReturn <> 0 Then
        WScript.Echo "Printer [" & strPrinterName & "] は共有に失敗しました。"
        Exit Sub
    End If
    
    For Each objW32Printer In colW32Printers
        With objW32Printer
            .Attributes = .Attributes Or 8
            .Shared = True
            .ShareName = strShareName
            .Put_
        End With
    Next
End Sub



Win32_Share.Create だけだと、Printer が共有の Icon で表示されないので
Win32_Printer の Property をいじってやる必要があります。
ちょいと面倒・・・
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2006-01-27 08:55
おはようございます.
引用:

ちゃっぴさんの書き込み (2006-01-27 01:57) より:
引用:

kazさんの書き込み (2006-01-27 01:13) より:
こんばんわ.
引用:

トリットさんの書き込み (2006-01-26 23:14) より:

キューの追加、プリンタ作成はできるようになったのですが、共有する方法がどうしてもわかりません。


net share でできませんか?




できましたっけ? NET SHARE ?


どこかでそんなやり方があるという記述を見た記憶があったんですが,
探してみたら見当たりませんでした,ゴメンナサイ.
トリット
会議室デビュー日: 2004/10/11
投稿数: 2
投稿日時: 2006-01-28 01:01
早速のご回答ありがとうございます。

WMI を使って共有を実行してみました。
一度、ソースを修正して、実行してみたのですが、
.Shared = True
にて、存在しないオブジェクトですみたいなエラーが表示され行うことができませんでした。(VBSで)

wmiについてはまったく初心者のためか、発生した原因がさっぱりわかりませんでした。

ひとまず、WMIを使用すると、できることがわかりましたので、WMIの勉強を行って頑張ってみようと思います。

どうも、ありがとうございました。



ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-01-28 02:09
引用:

WMI を使って共有を実行してみました。
一度、ソースを修正して、実行してみたのですが、
.Shared = True
にて、存在しないオブジェクトですみたいなエラーが表示され行うことができませんでした。(VBSで)



Windows 2000 でしょうか?

Win32_Printer class [WMI]

ここにあるように Windows 2000 では、Shared Property は not supported です。
なんで消しちゃってかまいません。

両方 Support するのであれば、OS による分岐が必要ですね。

それから、WMI の Reference は英語しかありませんので、
がんばって勉強してください。
# 解説なら、Script Center に結構ありますけどね。
1

スキルアップ/キャリアアップ(JOB@IT)