Archive for the ‘Tips’ Category

Windows 7 64bitを導入したPCでデュアルディスプレイを使用するため、
ビデオカードを買い替えました。安心のGigabyteです(笑)

カードを挿し、いざドライバの導入を!
と、思ったらドライバのセットアップが起動しない!?
…解決するのに、3時間くらいかかりましたorz

原因は、Mfc80.dll のようです。
マイクロソフトのサイトにKBがありました。
http://support.microsoft.com/kb/961894

対策としては、↓のサイトにあるパッチをダウンロードして実行しました。
http://code.msdn.microsoft.com/KB961894/Release/ProjectReleases.aspx?ReleaseId=2067

Radeonのドライバは噂通り、○○でした(笑)

vbscriptにてOutlook Exressのメールファイル(.dbx)の一覧とサイズを出力する例です。

Option Explicit
'On Error Resume Next

'#######################################################
'# Global-Configration #
'#######################################################

Const OpenTextFileForReading = 1
Const OpenTextFileForWriting = 2
Const OpenTextFileForAppending = 8

Const HKEY_CURRENT_USER = &H80000001

'*************************
' Call Main Program
'*************************
Main()

'*************************
' Start Main Program
'*************************

Sub Main()

'#######################################################
'# Local-Configration #
'#######################################################

Dim OBJ_WshShell 'WSH Shell Object
Dim OBJ_FSO 'File System Object
Dim OBJ_Folders 'Folder Object

Dim COL_Folders 'Collection Object

Dim STR_FileName 'String Object
Dim STR_StoreOwner 'String Object
Dim STR_StorePath 'String Object
Dim STR_LogFolder 'String Object
Dim STR_LogFile 'String Object
Dim STR_Temp 'String Object
Dim i

Set OBJ_WshShell = WScript.CreateObject("WScript.Shell")
Set OBJ_FSO = WScript.CreateObject("Scripting.FileSystemObject")

'【Get Mail Store Owner & Mail Store Path】
STR_StoreOwner = OBJ_WshShell.RegRead("HKEY_CURRENT_USER\Identities\Last User ID")
If Err.Number <> 0 Then

STR_Work = MsgBox("処理実行中にエラーが発生しました。処理を続行出来ません。プログラムを中止します。" & vbCrLf & "Error Code: RegRead Error-001" ,vbOkOnly + vbCritical,"エラーが発生しました")
Err.Clear
Set OBJ_FSO = Nothing
WScript.Quit 1

End If

STR_StorePath = OBJ_WshShell.RegRead("HKEY_CURRENT_USER\Identities\" & STR_StoreOwner & "\Software\Microsoft\Outlook Express\5.0\Store root")
If Err.Number <> 0 Then

STR_Work = MsgBox("処理実行中にエラーが発生しました。処理を続行出来ません。プログラムを中止します。" & vbCrLf & "Error Code: RegRead Error-002" ,vbOkOnly + vbCritical,"エラーが発生しました")
Err.Clear
Set OBJ_FSO = Nothing
WScript.Quit 1

End If

WScript.Echo "No,ファイル名,ファイルサイズ(MB)"

'【Get MailBox Folder & File-Size】
Set OBJ_Folders = OBJ_FSO.GetFolder(STR_StorePath)
Set COL_Folders = OBJ_Folders.Files
i = 1

For Each STR_FileName In COL_Folders

If LCase(Right(STR_FileName,4)) = ".dbx" Then

WScript.Echo i & "," & STR_FileName & "," & Round(STR_FileName.Size / 1000000,1)
i = i + 1

End If

Next

End Sub

以下のURLからインストーラをダウンロードすることが可能です。

■Adobe Flash Player ActiveX Installer
http://fpdownload.adobe.com/get/flashplayer/current/install_flash_player_ax.exe

■Adobe Flash Player Plugin Installer
http://fpdownload.adobe.com/get/flashplayer/current/install_flash_player.exe

通常Flash Playerは、以下のフォルダに展開されます。

C:\Windows\system32\Macromed\Flash
※OSにより、”Windows”の部分が”winnt”になります。

WSHを使用して、OSの起動時間と起動してからの経過時間を表示する例です。
WMIで各値を取得するのですが、UTCで値が返ってきますので、このサイトで紹介した
UTCを変換する関数を利用しています。

Option Explicit

Call Uptime()

'===========================================================================

Sub Uptime()

Dim OBJ_WMIService
Dim OBJ_Item
Dim COL_Item

Dim STR_Computer
Dim STR_NameSpace

Dim STR_BootUpTime
Dim STR_LocalTime
Dim STR_Work
Dim STR_Day
Dim STR_Hour
Dim STR_Min

STR_Computer = "."
STR_NameSpace = "/root/cimv2"

Set OBJ_WMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & STR_Computer & STR_NameSpace)

If Err.Number <> 0 Then

WScript.Echo "Error=" & Err.Number
WScript.Echo "ERROR Code=" & Err.Number & " Description=" & Err.Description
Err.Clear
Exit Sub

End If

Set COL_Item = OBJ_WMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem")

For Each OBJ_Item In COL_Item

STR_BootUpTime = OBJ_Item.LastBootUpTime
STR_LocalTime = OBJ_Item.LocalDateTime

Next

STR_BootUpTime = ConvertUTCToDate(STR_BootUpTime)
STR_LocalTime = ConvertUTCToDate(STR_LocalTime)

STR_Work = DateDIff("n", STR_BootUpTime, STR_LocalTime)

STR_Day = Fix((STR_Work / 60 ) / 24)
STR_Hour = (STR_Work / 60) Mod 24
STR_Min = STR_Work Mod 60

WScript.Echo "起動時刻: " & STR_BootUpTime
WScript.Echo "経過時間: " & STR_Day & " 日 " & STR_Hour & " 時間 " & STR_Min & " 分"

End Sub

'===========================================================================

Function ConvertUTCToDate(STR_DateTime)

ConvertUTCToDate = CDate(Mid(STR_DateTime, 5, 2) & "/" & _
Mid(STR_DateTime, 7, 2) & "/" & Left(STR_DateTime, 4) & " " & _
Mid(STR_DateTime, 9, 2) & ":" & _
Mid(STR_DateTime, 11, 2) & ":" & _
Mid(STR_DateTime, 13, 2))

End Function

フォルダを右クリックした際のメニュを追加します。
例ではコマンドプロンプトを右クリックしたフォルダから起動します。

1. レジストリエディタを起動します。

2. 以下の階層まで表示させます。
HKEY_CLASSES_ROOT\Folder\shell

3. 右クリック時に表示させたい名称を決め、右クリックにて「新規」→「キー」を選択し、決めたキー名を入力します。
例では 「コマンドプロンプト」とします

4. 作成した「コマンドプロンプト」キーを右クリックし、「新規」→「キー」を選択し、「command」と入力します。

5. 画面の右側にて(規定)と表示されている部分をダブルクリックし、文字列を編集します。
今回は「cmd.exe /K cd %L」と入力します。
20091110_01

フリーのツール等で右クリックメニュを追加するアプリケーションがありますが、このようなイメージでレジストリが変更されています。
今回はフォルダでしたが、特定の拡張子や全てのファイル・フォルダに適用することも可能です。

ただし編集は自己責任にてお願いします。

通常は、画面のプロパティから変更するデスクトップの壁紙ですが、レジストリを直接編集して壁紙を変更する方法です。
リモートレジストリを利用すれば遠隔で変更することも可能です。

1. レジストリ エディタを起動する。

2. 次のレジストリ サブキーを見つける。
HKEY_USERS\【SID】\Control Panel\Desktop

3. 次のレジストリ値を変更する。
 値の名前 : WallPaper
 データ型 : REG_SZ
 データの内容 : 壁紙のファイルパス

10/22に発売になりましたWindows7をインストールしました。
10/24にDSP版を求め、日頃パーツ等を購入しているお店にいったのですが、売れ切ればっかり…w
4店舗目にてやっと購入出来ました。

64bit版 Ultimateです。
クリーンインストールだったのですが、サクサク進んでいき、30分弱くらいでデスクトップが表示されました。
ドライバ関連もほぼ自動で認識し、動作も軽く感じますね。(メモリ8Gも積んでいれば当たり前かw)

が、64bitのせいか、さすがにSC-88Proのシリアルドライバが認識せず…
長い間、シリアルで使用していましたが、ついにUSB midi Interfaceを購入することとしました。
Roland UM-3Gです。予定外の出費が痛い…orz

PowerShell 2.0 正式版ダウンロードURL

Windows XP 用更新プログラム http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=60cb5b6c-6532-45e0-ab0f-a94ae9ababf5

Windows Vista 用更新プログラム http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=f2fa1227-9a34-4e29-aa03-62f5c00e16f2

Windows Vista for x64-based Systems 用の更新プログラム http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=0f73efa2-f8d6-45f3-a8f8-5cdc205b119a

Windows Server 2003 用更新プログラム http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=f002462b-c8f2-417a-92a3-287f5f81407e

Windows Server 2003 x64 Edition 用更新プログラム http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=909bbcf1-bd78-4e03-8c83-69434717e551

Windows Server 2008 用更新プログラム http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=863e7d01-fb1b-4d3e-b07d-766a0a2def0b

Windows Server 2008 x64 Edition 用更新プログラム http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=d37e25cf-db05-4b23-a852-cdf865d81b82

WSHを利用してメールを送信する例です。
今時のメール送信はSMTP Authなどが実装されている例が多いのですが、
今回の例は、SMTP Authには対応していません。(別途、紹介します)

パラメータは以下の通り。

Send_Msg “SMTPモード”,”SMTPサーバ”,”SMTPポート”,”送信元メールアドレス”,”宛先メールアドレス”,”CC宛先”,”BCC宛先”,”件名”,”本文”


Dim STR_SmtpHost
Dim STR_SmtpPort
Dim STR_MsgFrom
Dim STR_MsgTo
Dim STR_MsgCc
Dim STR_MsgBcc
Dim STR_MsgSubject
Dim STR_MsgBody

STR_SmtpHost = "xxx"
STR_SmtpPort = "xx"
STR_MsgFrom = "xxx@xxx.com"
STR_MsgTo = "xxx@yyy.com"
STR_MsgCc = ""
STR_MsgBcc = ""
STR_MsgSubject = "aaaa"
STR_MsgBody = "bbb"

Call Send_Msg(STR_SmtpHost, STR_SmtpPort, STR_MsgFrom, STR_MsgTo, STR_MsgCc, STR_MsgBcc, STR_MsgSubject, STR_MsgBody)

Function Send_Msg(STR_SmtpHost, STR_SmtpPort, STR_MsgFrom, STR_MsgTo, STR_MsgCc, STR_MsgBcc, STR_MsgSubject, STR_MsgBody)

Set OBJ_EMail = CreateObject("CDO.Message")

OBJ_EMail.From = STR_MsgFrom
OBJ_EMail.Subject = STR_MsgSubject
OBJ_EMail.TextBody = STR_MsgBody

OBJ_EMail.To = STR_MsgTo
OBJ_EMail.Cc = STR_MsgCc
OBJ_EMail.Bcc = STR_MsgBcc

OBJ_EMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
OBJ_EMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = STR_SmtpHost
OBJ_EMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = STR_SmtpPort

OBJ_EMail.Configuration.Fields.Update
OBJ_EMail.Send

Set OBJ_EMail = Nothing

End Function

リモートからリモートデスクトップを有効にするテクニックです。

本来ならば、以下の設定をローカルから設定するのですが、レジストリを変更することで、リモートから有効化します。

20090322_01

1. レジストリエディタを起動し、対象コンピュータへ接続します。

接続の方法は、メニュの「ファイル」 → 「ネットワーク レジストリへの接続」を選択します。

20090322_02

2. 対象コンピュータ名を入力し、ユーザ名・パスワードを入力します。

3. 次のレジストリ サブキーを見つけます。

HKEY_LOCAL_MACHINEのSYSTEM\CurrentControlSet\Control\Terminal Server

4. [編集] メニューの [新規] をポイントし、[DWORD 値] をクリックして、次のレジストリ値を追加する。
  値の名前 : fDenyTSConnections
  データ型 : DWORD
  値
 : 1 = 許可しない (規定値)  /  2 = 許可する