2010年07月3日をもって、マイクロソフトのOSの一部が
サポート終了になります。対象は以下の通り。
・Windows 2000 Professional / server
・Windows XP SP2
・Windows Vista RTM
Windows XPのSP3は2014年08月です。XPは本当に寿命の長いOSですね。
まだまだ現役。Windows 7への移行はゆっくりと進むのですかね。
あと4年もあれば64bitを利用する場面も増えるかな?
ITエンジニアの雑記
2010年07月3日をもって、マイクロソフトのOSの一部が
サポート終了になります。対象は以下の通り。
・Windows 2000 Professional / server
・Windows XP SP2
・Windows Vista RTM
Windows XPのSP3は2014年08月です。XPは本当に寿命の長いOSですね。
まだまだ現役。Windows 7への移行はゆっくりと進むのですかね。
あと4年もあれば64bitを利用する場面も増えるかな?
2010/03/10 追記
「ファイル名を指定して実行」で、「 shell:sendto 」 と入力すると、簡単に表示出来るようです。
これは便利です。
============================================================
覚え書きです。
Windows Vista/Windoes 7では、以前のWIndows XPや2000と比べ、フォルダの構造などが変わっています。
マウスで右クリックした際に表示される「送る」に、追加アプリケーションを指定する場合の方法です。
1.以下のフォルダを開く。
C:\Users\【ユーザ名】\AppData\Roaming\Microsoft\Windows\SendTo
2.SendTo フォルダにアプリケーションのショートカットをコピーまたは作成する。
以下、Notepad.exeのショートカットを入れた例です。
任意の場所にフォルダを新規作成する。
作成したフォルダ名を以下の通りに変更する。
GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}
フォルダ名の”GodMode”の部分は任意の文字列でも可。
Windows 7 64bit + Office 2010 64Bit ベータにて確認。
*.mdb(~Access2003) へのアクセスには jet(Microsoft.Jet.OLEDB.4.0) によるアクセス、
*.accdb(Access2007~) へのアクセスには ACE(Microsoft.ACE.OLEDB.12.0) を使用する。
jetは、c:\Windows\SysWOW64\cscript.exe (32bit) にて、
ACEは、c:\Windows\system32\cscript.exe (64bit) にて実行する。
vbscriptを利用してOutlook Expressのメールルールをバックアップする例です。
このスクリプトはバックアップファイル(レジストリファイル)の保存先、ファイル名を引数で渡します。
例:
(script名) c:\test.reg
バックアップしたファイルは、ダブルクリックすることでインポートが可能です。
ここでの注意点として、OSを再インストールする度にGUIDが変わってしまいます。
バックアップした時とインポートする時の状況が違う時は、バックアップしたファイルをメモ帳などで開き、
GUIDを置き換える必要があります。
例:
バックアップ元のGUID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
インポート先のGUID {zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz}
1.インポート先のGUIDを調べる。
2.バックアップ元のファイルを開き、{xxx~}を置き換える。
メモ帳の場合は「検索する文字列」にバックアップ元のGUIDを、「置換後の文字列」にインポート先のGUIDを入れましょう。
また、このスクリプトでは、reg.exeというファイルを利用しています。Windows XPから標準でインストールされているものになります。
Windows 2000ではreg.exeが入っていないため、使えません…
ソースのダウンロードは こちら です。
Option Explicit '####################################################### '# Global-Configration # '####################################################### Const OpenTextFileForReading = 1 Const OpenTextFileForWriting = 2 Const OpenTextFileForAppending = 8 Const REG_SZ = 1 Const REG_EXPAND_SZ = 2 Const REG_BINARY = 3 Const REG_DWORD = 4 Const REG_MULTI_SZ = 7 '************************* ' 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 OBJ_Args 'Argument Object Dim COL_Folders 'Collection Object Dim STR_FileName 'String Object Dim STR_StoreOwner 'String Object Dim STR_RulePath '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") Set OBJ_Args = WScript.Arguments '引数チェック If OBJ_Args.Count = 1 Then STR_FileName = OBJ_Args(0) If Right(LCase(STR_FileName), 4) = ".reg" Then Else STR_FileName = STR_FileName & ".reg" End If If OBJ_FSO.FileExists(STR_FileName) Then WScript.Echo "エラー:出力先に同名のファイルが存在します。処理を続行出来ません。" WScript.Quit 1 End If Else WScript.Echo "エラー:引数の数が不正です。処理を続行出来ません。プログラムを中止します。" WScript.Quit 1 End If '【Get Mail Store Owner & Mail Store Path】 STR_StoreOwner = OBJ_WshShell.RegRead("HKEY_CURRENT_USER\Identities\Last User ID") If Err.Number <> 0 Then WScript.Echo "エラー:処理実行中にエラーが発生しました。処理を続行出来ません。プログラムを中止します。" Err.Clear Set OBJ_FSO = Nothing WScript.Quit 1 End If STR_RulePath = """HKEY_CURRENT_USER" & "\Identities\" & STR_StoreOwner & "\Software\Microsoft\Outlook Express\5.0\Rules""" If Err.Number <> 0 Then WScript.Echo "エラー:処理実行中にエラーが発生しました。処理を続行出来ません。プログラムを中止します。" Err.Clear Set OBJ_FSO = Nothing WScript.Quit 1 End If 'レジストリのExport OBJ_WshShell.Run "reg.exe export " & STR_RulePath & " " & STR_FileName, 0, True If Err.Number = 0 Then WScript.Echo "レジストリのバックアップは正常に完了しました。出力したファイルは " & STR_FileName & " です。" WScript.Quit 0 Else WScript.Echo "エラー:レジストリのバックアップに失敗しました。" WScript.Quit 1 End If End Sub
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
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」と入力します。
フリーのツール等で右クリックメニュを追加するアプリケーションがありますが、このようなイメージでレジストリが変更されています。
今回はフォルダでしたが、特定の拡張子や全てのファイル・フォルダに適用することも可能です。
ただし編集は自己責任にてお願いします。
通常は、画面のプロパティから変更するデスクトップの壁紙ですが、レジストリを直接編集して壁紙を変更する方法です。
リモートレジストリを利用すれば遠隔で変更することも可能です。
1. レジストリ エディタを起動する。
2. 次のレジストリ サブキーを見つける。
HKEY_USERS\【SID】\Control Panel\Desktop
3. 次のレジストリ値を変更する。
値の名前 : WallPaper
データ型 : REG_SZ
データの内容 : 壁紙のファイルパス
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