
私はクライアントサイトでのログオンスクリプトのトラブルシューティングを担当しています。このスクリプトは、デフォルトのプリンタを設定するものです。ログオンスクリプトはVBScriptで、プリンタは次のように設定されています。
Set WshNetwork = CreateObject("WScript.Network")
...
WshNetwork.SetDefaultPrinter(strPrinter)
セットアップした技術者は動作していると言いました。顧客は動作していないと言いました。私のテストでは断続的にしか動作しないことがわかりました。現在、次のような状態です。
WScript.Echo GetDefaultPrinter
For i = 0 to 50
if strPrinter <> GetDefaultPrinter then
WshNetwork.SetDefaultPrinter(strPrinter)
end if
Next
'WshNetwork.SetDefaultPrinter("Fax")
Msgbox("Called WshNetwork.SetDefaultPrinter(" & strPrinter & ")")
WScript.Echo GetDefaultPrinter
Function GetDefaultPrinter
sComputer = "."
Set oWMIService = GetObject("winmgmts:\\" & sComputer & "\root\cimv2")
Set colItems = oWMIService.ExecQuery("Select * from Win32_Printer",,48)
For Each oItem in colItems
If (oItem.Attributes And 2^(3-1)) = 4 Then
sDefault = oItem.Name
Exit For
End If
Next
GetDefaultPrinter = sDefault
End Function
これにより、変更を試みる前と後でデフォルトのプリンターを確認できます。ループは役に立ったようですが、問題を完全に解決したわけではありません。新しいプリンターが正しく設定されることもありますが、ログオフして再度ログインしても、同じデフォルトのプリンターを設定できないこともあります。明確にするために、私はないフルタイムの管理者です。このテクニックは時代遅れでしょうか? デフォルトのプリンターを設定するには、何か他のものを使用する必要がありますか?
編集: さらに、ユーザーがユーザーセッション中に設定または変更したデフォルトのプリンターを記憶し、そのプリンターをデフォルトとして設定する必要があります。
答え1
Server 2008 と Windows 7 をお使いの場合は、グループ ポリシーの基本設定を使用して既定のプリンターを設定できます。現在、これを使用して、コンピューター ラボで既定のプリンターを設定しています。これらのコンテナーの GPO を作成する必要がありますが、かなり細かく設定できます。
グループ ポリシー エディターでは、ポリシーは次の場所にあります...
ユーザー構成 -> 設定 -> コントロール パネルの設定 -> プリンタ
そこにプリンターを追加します。チェックボックスの 1 つは「既定のプリンターにする」です。これは本当に機能します。
答え2
Network オブジェクトを使用するのではなく、コマンドを直接実行しています: rundll32 printui.dll,PrintUIEntry /y /n "" は正常に動作しているようです