2006-06-15 (Thu)

* cygrunsrv が CPU を消費して Windows Update できない件の対処

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows] [unix]

Windows Update 中に cygrunsrv が CPU を消費して Windows Update が進まなくなった。cron サービスを一時的に停止して対処。

- Windows Update が途中で止まる

一台の Windows2000 SP4 マシンで Windows Update (正確には Microsoft Update かな?) に失敗しているという現象があった。更新のダウンロードは問題なく完了しているのだが、その後のインストール中に先に進まなくなってしまう。

「更新をインストールしています」という画面でその現象が出る。「Outlook Express 6 Service Pack 1 の累積的な修正プログラム (KB911567) をインストール中 (更新 12 個中 2 個)...」のインストール中に何かが進行を妨げているようだ。

- cygrunsrv の CPU 使用率が異常に高い

何か暴走しているプロセスがあるのではないかと考えてタスクマネージャを見ると、cygwin のデーモンを司るプロセスである cygrunsrv の CPU 使用率が跳ね上がっている。私の環境では cygwin で cron を使っているので cygrunsrv が起動しているのだが、これが原因なのだろうか?

- cygrunsrv を止める

タスクマネージャで cygrunsrv を kill 仕様としたが、操作を拒否された。仕方がないので OS を再起動。「コントロールパネル」の「管理ツール」の「サービス」で、cron サービスを止めたところ、cygrunsrv のプロセスがタスクマネージャから消えた。

- Windows Update 成功

cgyrunsrv を止めた状態で Windows Update したところ、正常にアップデートできた。

2006-05-24 (Wed)

* タスクマネージャのネットワークのタブを常にアクティブにする

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows] [ネットワーク]

Windows のタスクマネージャの「ネットワーク」タブで、「タブを常にアクティブにする(T)」を選択しておけば、タスクマネージャ起動直後から計測している状態にできる。

- タスクマネージャのネットワークタブは一度選択してからでないと計測がおこなわれない

タスクマネージャは、マシンのリソースの使用状況や起動中のプロセスを表示するツールだ。WidnowsXP や Windows Server 2003 では、タスクマネージャに機能追加が行われて、「ネットワーク」というタブが追加された。「ネットワーク」タブではマシンのネットワークインターフェイスのトラフィックを表示することができるようになった。

しかし、「ネットワーク」タブには不便な点がある。タスクマネージャを起動した後、一度「ネットワーク」タブを選択してからでないと計測を開始しないのだ。計測には負荷がかかるからこういう仕様なんだろうが、手間がかかる。可能なら、タスクマネージャ起動直後から計測をしていてほしい。

最近、この不便さを解消する設定項目を見つけた。

- タスクマネージャのネットワークタブを常にアクティブにして、常に計測状態にする

タスクマネージャのネットワークタブを常にアクティブにして、タスクマネージャ起動直後から計測状態にする方法。

1. タスクマネージャの「ネットワーク」タブを開く。
2. オプション(O) の「タブを常にアクティブにする(T)」を選択する。

たったこれだけ。

- 「オプション」の項目が動的に変化することに気づかなかった

なぜこんな簡単な手順に気づかなかったか。その理由は、タスクマネージャのオプションを選んだときに表示される項目は、現在表示しているタブによって動的に変化するからだ。

また、タスクマネージャのユーザーインターフェイスは表示系の設定は「表示 (V)」で、その他の設定は「オプション(O)」で設定するため、私にはわかりにくかった。また、ある程度使い慣れたツールなので、まさかそんなオプションがあるとは思わなかったということもある。

ユーザーインターフェイスの設計ってやっぱり難しいなあ。今回の場合、どうなっていれば私は迷わなかったんだろう? 一覧性のあるオプション設定画面でもあれば良かったのかな。

2006-05-17 (Wed)

* Windows の DEP は物理アドレス拡張 (PAE) を自動的に有効にする

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [PC] [Windows]

私の PC はマイコンピュータのプロパティを開くと「物理アドレス拡張」という表示がある。

- 物理アドレス拡張 (PAE - Physical Address Extension)

物理アドレス拡張 (PAE - Physical Address Extension) は、4GB 以上の物理メモリを搭載しているマシンでメモリを正常に認識するために利用する機能だ。確か boot.ini などで OS の起動オプションとして指定して有効にする。

しかし、私のマシンは 2GB しかメモリを搭載していない。私の PC は 2005-06-18 の「Athlon64 マシンを自作する」で作った AMD Athlon64 3000+ CPU と 2GB メモリというスペックだ。PAE は必要ないはずなのに、なぜ有効になっているのだろう?

- DEP (データ実行防止機能 Data Execution Prevention) が PAE を有効にする

調べたら原因がわかった。DEP が有効だと、それに連動して PAE が自動的に有効になるとのこと。

物理アドレス拡張 (PAE : Physical Address Extension) の概要
http://www.microsoft.com/technet/prodtechnol/windowsserver20 ...
非実行ページ保護機能をサポートするプロセッサを搭載しているコンピュータ上で DEP が有効なときは、Windows Server 2003 Service Pack 1 (SP1) および Windows XP Service Pack 2 (SP2) を実行するコンピュータ上で PAE が自動的に有効になります。

2006-01-24 の「Windows のデータ実行防止 (DEP) 機能の適用を除外する」でも DEP のせいで Skepe じゃなくて Skype が動かないという現象があった。DEP についてはそのうち一通り調べておこう。

2006-05-03 (Wed)

* C# と DirectX で動画を再生する

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [.net] [C#] [Windows]

2006-04-27 「C# でスクリーンセーバーを作る」の続き。C# から DirectX を使って MPEG2 の動画を再生する。

- DirectX SDK のダウンロード

動画再生部分は DirectX を使って作ることにしたので、DirectX SDK をダウンロードした。サイズが390.2MB もあるので、気長に。

DirectX SDK - (April 2006)
http://www.microsoft.com/downloads/details.aspx?FamilyId=7AB ...

ダウンロードしたファイルを実行。インストーラではいつも通り「次へ」を連打してインストール完了。

- Microsoft.DirectX.AudioVideoPlayback で動画を再生

動画再生部分は Microsoft.DirectX.AudioVideoPlayback を使って簡単に作れた。

string path = GetNextClipPath();
fileIndex++;
if (videoClip == null) {
    videoClip = new Video(path);
} else {
    videoClip.Ending -= this.ClipEnded;
    videoClip.Open(path);
}
videoClip.Ending += new System.EventHandler(this.ClipEnded);
videoClip.Owner = this;
videoClip.Fullscreen = false;
Bounds = new Rectangle(0, 20, 1280, 960);
videoClip.Play();

これをベースとしている Visual Studio 2005 のスクリーンセーバースタートキットに組み込めば、動画を再生するスクリーンセーバーのできあがり。とっても簡単だ。

プログラムに名前を付けよう。スタートキットがデフォルトで付ける ScreenSaver1.exe だと味気ないし、「画面のプロパティ」で選択するときも何か名前が表示されてほしいし。とくに思いつかなかったので、とりあえず SaveTheQueen (セーブザクイーン) にした。FF12 に出てきた剣の名前が元ねただ。FF9 にも出てきたかな? もともと 2006-04-20 の「FF12 のムービーをリッピング (ripping) して再生」でリップしたファイルを再生するスクリーンセーバーを作るのが目的だから、save という単語が入っていて、FF っぽい名前であればなんでも良かった。

- SaveTheQueen のソース

後の私も含めて、誰かの参考になるかもしれないので、メインフォームとオプションフォームのコードを全部載せておく。私の環境以外を考慮していないコードだし、エラー処理やオプションの処理も入ってない。たとえばビデオクリップのパスに対して FileExists() もしてない。

ソース一式とバイナリをパッケージしたものはそのうち作ろうかな。Suversion から 自動でチェックアウトしてビルドして ClickOnce としてパッケージするようにしよう。

ScreenSaverForm.cs
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using Microsoft.DirectX.AudioVideoPlayback;

namespace SaveTheQueen {
    partial class ScreenSaverForm : Form {

        private bool isActive = false;
        private Point mouseLocation;
        private Video videoClip;
        private DefaultTraceListener dtl;

        /// <summary>
        /// 再生するリスト上の現在位置。始点は0。
        /// </summary>
        private int fileIndex = 0;

        public ScreenSaverForm() {
            Trace.WriteLine(DateTime.Now.ToString() + " " + System.Reflection.MethodBase.GetCurrentMethod().Name);

            dtl = (DefaultTraceListener)Trace.Listeners["Default"];
            dtl.LogFileName = @"c:\trace.txt";

            InitializeComponent();
            SetupScreenSaver();
            PlayVideoClip();
        }

        private void SetupScreenSaver() {
            Trace.WriteLine(DateTime.Now.ToString() + " " + System.Reflection.MethodBase.GetCurrentMethod().Name);

            // ダブル バッファを使用して、表示パフォーマンスを改善します。
            this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true);

            // マウスをキャプチャします。
            this.Capture = true;

            // アプリケーションを全画面表示モードに設定して、マウスを表示しません。
            Cursor.Hide();
            // Bounds = Screen.PrimaryScreen.Bounds;
            ShowInTaskbar = false;
            DoubleBuffered = true;

            ResumeVideoClip();
        }

        /// <summary>
        /// 現在再生しているビデオクリップの情報を保存します。
        /// </summary>
        private void SaveVideoClip() {
            Properties.Settings.Default.LastClipIndex = fileIndex - 1;
            Properties.Settings.Default.LastClipPosision = videoClip.CurrentPosition;
            Properties.Settings.Default.Save();
        }

        /// <summary>
        /// 前回終了時に再生していたビデオクリップの情報を復元します。
        /// </summary>
        private void ResumeVideoClip() {
            int lastClipIndex = Properties.Settings.Default.LastClipIndex;
            if (0 <= lastClipIndex && lastClipIndex < Properties.Settings.Default.videoClipPath.Length) {
                fileIndex = lastClipIndex;
            }
      }

        private void PlayVideoClip() {
            Trace.WriteLine(DateTime.Now.ToString() + " " + System.Reflection.MethodBase.GetCurrentMethod().Name );

            string path = GetNextClipPath();
            fileIndex++;
            if (videoClip == null) {
                videoClip = new Video(path);
            } else {
                videoClip.Ending -= this.ClipEnded;
                videoClip.Open(path);
            }
            videoClip.Ending += new System.EventHandler(this.ClipEnded);
            videoClip.Owner = this;
            videoClip.Fullscreen = false;
            // WindowState = FormWindowState.Normal;
            Bounds = new Rectangle(0, 20, 1280, 960);
            videoClip.Play();
        }

        private void ClipEnded(object sender, System.EventArgs e) {
            Trace.WriteLine(DateTime.Now.ToString() + " " + System.Reflection.MethodBase.GetCurrentMethod().Name);

            PlayVideoClip();
        }

        private string GetNextClipPath() {
            Trace.WriteLine(DateTime.Now.ToString() + " " + System.Reflection.MethodBase.GetCurrentMethod().Name);

            if (Properties.Settings.Default.videoClipPath.Length == 0) {
                return "";
            }
            if (Properties.Settings.Default.videoClipPath.Length - 1 < fileIndex) {
                fileIndex = 0;
            }
            if (fileIndex < 0) {
                fileIndex = Properties.Settings.Default.videoClipPath.Length - 1;
            }

            string path = Properties.Settings.Default.videoClipPath[fileIndex];
            Trace.WriteLine(DateTime.Now.ToString() + " " + System.Reflection.MethodBase.GetCurrentMethod().Name + " " + path);

            return path;
        }

        private void ScreenSaverForm_MouseMove(object sender, MouseEventArgs e) {
            Trace.WriteLine(DateTime.Now.ToString() + " " + System.Reflection.MethodBase.GetCurrentMethod().Name);

            // IsActive および MouseLocation を、このイベントが最初に呼び出されるときにのみ設定します。
            if (!isActive) {
                mouseLocation = MousePosition;
                isActive = true;
            } else {
                // 最初の呼び出し以来マウスが著しく移動した場合、閉じます。
                if ((Math.Abs(MousePosition.X - mouseLocation.X) > 10) ||
                    (Math.Abs(MousePosition.Y - mouseLocation.Y) > 10)) {
                    Close();
                }
            }
        }

        private void ScreenSaverForm_KeyDown(object sender, KeyEventArgs e) {
            Trace.WriteLine(DateTime.Now.ToString() + System.Reflection.MethodBase.GetCurrentMethod().Name);

            if (e.KeyData == Keys.F) {
                // 次のクリップ
                PlayVideoClip();
            } else if (e.KeyData == Keys.B) {
                // 前のクリップ
                fileIndex -= 2;
                PlayVideoClip();
            } else if (e.KeyData == Keys.R) {
                // 現在再生中のクリップを頭からもう一度再生
                fileIndex--;
                PlayVideoClip();
            } else {
                Close();
            }
        }

        private void ScreenSaverForm_MouseDown(object sender, MouseEventArgs e) {
            Trace.WriteLine(DateTime.Now.ToString() + System.Reflection.MethodBase.GetCurrentMethod().Name);

            Close();
        }

        private void ScreenSaverForm_FormClosing(object sender, FormClosingEventArgs e) {
            Trace.WriteLine(DateTime.Now.ToString() + " " + System.Reflection.MethodBase.GetCurrentMethod().Name);

            if (videoClip != null) {
                SaveVideoClip();
                videoClip.Dispose();
                videoClip = null;
            }
        }
    }
}

ダブルバッファなどはベースとしたスクリーンセーバースタートキットに最初から入ってたもの。効果のほどは不明。コメントアウトしても問題なく再生できてたし。CPU 負荷や GPU の負荷が違うのかな。タスクマネージャで見てたけど、コメントアウトしても負荷が十分に低かったので違いがわからなかった。

OptionsForm.cs
using System;
using System.Configuration;
using System.Drawing;
using System.Windows.Forms;


namespace SaveTheQueen {
    partial class OptionsForm : Form {
        public OptionsForm() {
            InitializeComponent();

            // 現在の設定からテキスト ボックスを読み込みます。
            try {
                backgroundImageFolderTextBox.Lines = Properties.Settings.Default.videoClipPath;
            //  rssFeedTextBox.Text = Properties.Settings.Default.RssFeedUri;
            } catch {
                MessageBox.Show("スクリーン セーバーの設定での読み取り中に問題が発生しました。");
            }
        }

        // [適用] ボタンが最後に押されてから変更が行われた場合にのみ、
        // [適用] ボタンをアクティブな状態に更新します。
        private void UpdateApply() {
            /*
            if (Properties.Settings.Default.BackgroundImagePath != backgroundImageFolderTextBox.Text
                  || Properties.Settings.Default.RssFeedUri != rssFeedTextBox.Text)
                applyButton.Enabled = true;
            else
                applyButton.Enabled = false;
            */
        }

        // [適用] ボタンが最後に押されてからの、すべての変更を適用します。
        private void ApplyChanges() {
            Properties.Settings.Default.videoClipPath = backgroundImageFolderTextBox.Lines;
            Properties.Settings.Default.Save();
        }

        private void btnOK_Click(object sender, EventArgs e) {
            try {
                ApplyChanges();
            } catch (ConfigurationException) {
                MessageBox.Show("設定を保存できませんでした。スクリーン セーバーと同じディレクトリ内に .config ファイルがあることを確認してください。", "設定を保存できませんでした。", MessageBoxButtons.OK, MessageBoxIcon.Error);
            } finally {
                Close();
            }
        }

        private void btnCancel_Click(object sender, EventArgs e) {
            Close();
        }

        private void btnApply_Click(object sender, EventArgs e) {
            ApplyChanges();
            applyButton.Enabled = false;
        }

        // ユーザー指定された URI が有効な RSS フィードにポイントするかどうかを確認します。
        private void validateButton_Click(object sender, EventArgs e) {
            try {
                // RssFeed.FromUri(rssFeedTextBox.Text);
            } catch {
                MessageBox.Show("有効な RSS フィードではありません。", "有効な RSS フィードではありません。", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            MessageBox.Show("有効な RSS フィードです。", "有効な RSS フィードです。", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }

        private void browseButton_Click(object sender, EventArgs e) {
            // [ファイルを開く] ダイアログを開いて、イメージを選択します。

            DialogResult result = backgroundImageFolderBrowser.ShowDialog();
            if (result == DialogResult.OK) {
                backgroundImageFolderTextBox.Text = backgroundImageFolderBrowser.SelectedPath;
                UpdateApply();
            }
        }

        private void rssFeedTextBox_TextChanged(object sender, EventArgs e) {
            UpdateApply();
        }

        private void backgroundImageFolderTextBox_TextChanged(object sender, EventArgs e) {
            UpdateApply();
        }

        private void backgroundImageOpenFileDialog_FileOk(object sender, System.ComponentModel.CancelEventArgs e) {

        }

        private void backgroundImageFolderBrowser_HelpRequest(object sender, EventArgs e) {

        }

        private void button1_Click(object sender, EventArgs e) {
            DialogResult result = videClipOpenFileDialog.ShowDialog();
            if (result == DialogResult.OK) {
                backgroundImageFolderTextBox.Lines = videClipOpenFileDialog.FileNames;
                UpdateApply();
            }
        }

        private void rssGroupBox_Enter(object sender, EventArgs e) {

        }
    }
}

OptionsForm.cs は不要なコードを消してないので冗長。

C#でムービースクリーンセーバー
http://d.hatena.ne.jp/bellbind/20060428/1146200768
ムービースクリーンセーバーを作ったってはなしだけど、作るのに必要な情報は入って無いんで自分で調べて書いてみた。

  public SimpleScreenSaver() {
    this.FormBorderStyle = FormBorderStyle.None;
    this.WindowState = FormWindowState.Maximized;
    this.KeyDown += new KeyEventHandler(this.MyKeyDown);
    this.MouseDown += new MouseEventHandler(this.MyMouseDown);
    this.Load += new EventHandler(this.MyLoad);
    this.ClientSize = new Size(640, 480);
    this.player = new Video("movie.avi");
    this.player.Owner = this;
  }

(略)

cscでのビルドには/r:Microsoft.DirectX.AudioVideoPlayback.dllが必要だけど、これはc:\WINDOWS\Microsoft.NET\DirectX for Managed Code\*\以下にあるのでそれを使う。

私もとりえあず再生さえできれば良かったので AudioVideoPlayback を使いました。

あれ? もしかして DirectX の dll って最初からインストールされてたのかな? わざわざ SDK をダウンロードする必要ってなかった? まあ、スクリーンセーバーを作るためだけにわざわざ Visual Studio 2005 をインストールしてるわけだから、DirextX SDK を追加で入れるくらい誤差みたいなものということで。それにそもそも .NET Framework 2.0 をインストールする必要がある。スクリーンセーバーのためだけに .NET Framework 2.0 を要求するって結構すごいよなあ。

本当はもっといろいろ DirectX の機能を使ってみようかと思った。ビデオクリップの解像度にあわせてディスプレイの解像度を変更したり、マルチディスプレイ環境では再生するディスプレイを選択できるようにしたりとかね。でも、結局液晶ディスプレイで再生してるので、解像度を落としても dot-by-dot で再生できるわけじゃなく、スケーリングが入るので美しさは変わらない。高い解像度のままでも CPU や GPU の負荷もとくに問題にならなかった。マルチディスプレイ対応については、「あったらいいな」くらいで必須じゃない。というわけで今の私の環境ではあんまり意味がなくなったので見送った。

2006-04-27 (Thu)

* C# でスクリーンセーバーを作る

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [.net] [C#] [Windows]

Visual Studio 2005 Express Edition を使ってスクリーンセーバーを作る。

2006-04-25 で Visual Studio 2005 (VS2005) のインストールも終わった。VS2005 をインストールした理由の「作りたかったちょっとしたアプリケーション」とはスクリーンセーバーだ。2006-04-20 の「FF12 のムービーをリッピング (ripping) して再生」でリッピングした MPEG2 ムービーを再生するスクリーンセーバーを作りたい。そういうスクリーンセーバーはすでにいくつかあるが、やっぱり自分好みのものがほしい。

VS2005 に慣れるにはいい題材かな・・・と思ったら、そもそも VS2005 のプロジェクトテンプレートとして「スクリーンセーバースタートキット」というのがあるじゃん。これはラッキー。とりあえずこれを見てみよう。

スクリーンセーバースタートキット

このスタート キット プロジェクトでは、RSS フィードからのニュース記事を表示するスクリーン セーバーの構築方法を紹介します。

- スクリーンセーバースタートキット

スクリーンセーバーの実体は単なる実行ファイルと聞いたことがあったが、その通りだった。いくつかの引数を処理できる実行ファイルを作り、拡張子を exe から scr に変更して windows ディレクトリに配置すれば、「画面のプロパティ」などからスクリーンセーバーとして設定できる。

スクリーンセーバースタートキットには、そういった実行ファイルを作るために必要なもの一式が入っている。メインフォーム一つ、設定用のオプションフォーム一つ、エントリポイント (アプリケーションの開始点) の C# ソースファイルが一つ、あとはライブラリとリソース群。

以下はエントリポイント。Program.cs に書かれている。

static void Main(string[] args) {
    if (args.Length > 0) {
        // 2 文字のコマンド ライン引数を取得します。
        string arg = args[0].ToLower(CultureInfo.InvariantCulture).Trim().Substring(0, 2);
        switch (arg) {
            case "/c":
                // オプション ダイアログを表示します。
                ShowOptions();
                break;
            case "/p":
                // プレビューに対して何もしません。
                break;
            case "/s":
                // スクリーン セーバーのフォームを表示します。
                ShowScreenSaver();
                break;
            default:
                MessageBox.Show("コマンド ライン引数が無効です :" + arg, "コマンド ライン引数が無効です。", MessageBoxButtons.OK, MessageBoxIcon.Error);
                break;
        }
    } else {
        // 渡される引数がない場合、スクリーン セーバーを表示します。
        ShowScreenSaver();
    }
}

必ず必要な引数の処理などは全部テンプレートに入ってる。いやー楽だ。実際、ビルドしてすぐにスクリーンセーバーとして使える。動作を変えたければ、上記から呼んでいる ShowScreenSaver() にその処理を書けば OK。私の場合、動画を再生するコードを書けばいい。

- C# で動画を再生する

動画を再生するにはいろいろ方法はあると思うが、せっかくだからいままでやったことのない領域でやろうと思う。スクリーンセーバー部分はテンプレート使っちゃってるし。というわけで DirextX を使うことにした。再生するだけなら簡単だった。詳細はまた後ほど。

2006-04-20 (Thu)

* FF12 のムービーをリッピング (ripping) して再生

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [ゲーム] [FF12] [音楽] [Windows]

FF12 をクリア。まだイベントやモブは残ってるけど一段落。最後まで楽しみ尽くしたい。手始めとして、ムービーをリッピングしておきたい。

- FF12 用リッピングツール ffxii2mov

Project-fao
http://www.project-fao.org/

Final Fantasy XII ムービー抽出ツール ffxii2mov v1.01 をダウンロード。
md5: beb5fc32c5548ef6d92b4e72b551fd03
sha1: d232e623f96477fc26dff469373f0b186d6e67c2

FF12 のディスクを DVD-ROM を読めるドライブに入れて抽出開始ボタンを押すだけ。合計39 * 2ファイル、約2GB のデータが作られる。データが生成されるパスは exe ファイルと同じディレクトリ。

使い方は README に書いてある。誰かに聞く前にまず読もう。

via: FF12スタッフロールで吉田神のイラストに感動した奴
http://dkiroku.com/2006-04-08-3.html

- ffxii2mov でムービーと音楽をリッピング


私の使ったドライブは MATSUSHITA DVD-ROM SR-8584A m15A というドライブ。たぶん等倍速か、せいぜい2倍速。そのためか、リッピング中に CPU の負荷はほとんどなかった。ネットワークドライブ上にリッピングしたが、ネットワークのトラフィックも 3Mbps から 20Mbps 位の範囲で推移。DVD-ROM ドライブがボトルネックなんだろうなあ。15分ほどで一個目をリップ完了。その後データを映像と音声に分離開始。

でも、1個あたり15分って遅いよね。もしかしてネットワークドライブにしているマシンの NIC とスイッチングハブのネゴシエーションが上手くいってないんじゃ? と思ってスイッチの設定を 100Mbps の Full から AUTO にしたら一気に 50Mbps を超えるようになった。スイッチ側だけ 100-Full 固定で NIC 側は AUTO ってやっぱり鬼門だな。

もう一度最初からやったら1個目は2分でリップできた。デコードを含めると5分。1時間程度でリッピング終了。合計で 2.05GB だった。FF12 のディスクは 3.75 GB だが、約半分がムービーなんだね。音声ファイルも作られたけど、これはゲーム中の音楽というよりはムービーのサウンドトラック部分。私の好きなギーザ草原の曲などは聴けないので、音楽が必要ならサントラの方がいいかなあ。

- フリーの MPEG2 Codec (コーデック) をインストール

リッピングしたムービーは MPEG2 でエンコードされているので、私の WindowsXP ではそのまま再生できなかった。MPEG2 を処理するための Codec (コーデック) が必要。というわけで DScaler Deinterlacer/Scaler をインストールした。オープンソースの MPEG2 Codec だ。無料で使用可能。

DScaler Deinterlacer/Scaler
http://sourceforge.net/project/showfiles.php?group_id=7420&a ...
http://prdownloads.sourceforge.net/deinterlace/DScaler5008.e ... からダウンロード。

- MPEG2 の動画ファイルをスクリーンセーバーにする

MPEG2 をそのまま鑑賞してもいいけど、やっぱりスクリーンセーバーにするのが良いと思う。参考書などを読んでいて、ふっと顔をディスプレイに向けると、ラバナスタでアーシェ王女の結婚のパレードがおこなわれていたりとか、ジャッジ達が歩いてたりとかすると、気分を和ませてくれる。

というわけで、動画をそのままスクリーンセーバーにするツールをダウンロード。

BearBeetle's Page - Free Sfotware -
http://www2s.biglobe.ne.jp/~img/download_free.htm

DirectX Movie Saver(Windows95/98/Me/アミューズメント)
http://www.vector.co.jp/soft/win95/amuse/se224712.html

私はDirectX Movie Saverを使った。2004-04-20 の「Radeon 7000 と S3 ViRGE/VX でマルチモニタ」で作ったマルチディスプレイ環境でもムービーがプライマリ側で再生されるからだ。あ、でもファイルの変わり目や繰り返し再生時に再生されなくなることがあるなあ。そのうち自分好みのスクリーンセーバーでも作るか。

- Atrac3 Codec

音声は Atrac3 でエンコードされているので、これも Codec が必要。PS2 の音声って Atrac3 が多いの? さすがソニー。MD や携帯用音楽プレイヤー以外で使われてるのって知らなかった。

Sony ATRAC3 Audio Codec 0.98
http://www.free-codecs.com/download_soft.php?d=76&s=31
md5: F7F57D9E90FF6A193DDDC933E06C179A
sha1: 51BAA974E02BF4F89D83B78BDE9FE1A3A1518E16

開発元不明。まあいいか。

- ムービーリスト

以下、リッピングしたファイルについてのメモ。

ファイル名、ファイルサイズ、再生時間、内容。

ffxii_01.m2v 210,228,740 07:01 オープニング。
ffxii_02.m2v 27,724,444 ??:??
ffxii_03.m2v 17,791,480 ??:??
ffxii_04.m2v 15,096,320 ??:??
ffxii_05.m2v 14,102,200 ??:??
ffxii_06.m2v 25,439,100 ??:??
ffxii_07.m2v 22,479,268 ??:??
ffxii_08.m2v 27,749,076 ??:??
ffxii_09.m2v 16,312,140 ??:??
ffxii_10.m2v 15,075,596 ??:??
ffxii_11.m2v 30,450,148 ??:??
ffxii_12.m2v 15,677,196 ??:??
ffxii_13.m2v 23,832,528 ??:??
ffxii_14.m2v 19,611,544 ??:??
ffxii_15.m2v 12,623,816 ??:??
ffxii_16.m2v 190,036,012 ??:?? 空中要塞バハムート戦。
ffxii_17.m2v 63,238,716 ??:??
ffxii_18.m2v 29,994,796 ??:??
ffxii_19.m2v 19,360,728 ??:??
ffxii_20.m2v 12,481,992 ??:??
ffxii_21.m2v 58,052,160 ??:??
ffxii_22.m2v 14,875,696 ??:??
ffxii_23.m2v 19,599,496 ??:??
ffxii_24.m2v 16,713,848 ??:??
ffxii_25.m2v 18,650,536 ??:??
ffxii_26.m2v 150,640,268 05:00 エンディング。
ffxii_27.m2v 23,010,044 ??:??
ffxii_28.m2v 65,522,984 ??:??
ffxii_29.m2v 64,824,700 ??:?? ラスボス。エフゲニー・プルシェンコ。2006-04-15 参照。
ffxii_30.m2v 21,448,252 ??:??
ffxii_31.m2v 105,537,460 ??:?? ヴェイン執政官ラバナスタ着任パレードと演説。
ffxii_32.m2v 40,226,648 ??:??
ffxii_33.m2v 26,047,744 ??:??
ffxii_34.m2v 8,565,336 ??:??
ffxii_35.m2v 11,275,064 ??:??
ffxii_36.m2v 9,622,320 ??:??
ffxii_37.m2v 11,908,192 ??:??
ffxii_38.m2v 101,779,156 ??:?? タイトルデモ
ffxii_39.m2v 262,251,948 ??:?? スタッフロール

ちょっとずつ埋めていくのが楽しい。わかってる範囲でストーリー順に並べると、38 01 31 (略) 16 26 39 かな。

2006-04-19 (Wed)

* cygwin をインストールせずに cygwin の diff コマンドを使う

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows]

ディレクトリの比較をするために、コマンドプロントから cygwin の diff コマンドを使いたいけど、cygwin をインストールしたくない。

diff コマンドを置いたファイルサーバのディレクトリを、cygwin をインストールしていないクライアントマシンからファイル共有を使ってネットワークドライブとして接続させ、diff をクライアントのコマンドプロンプトから使わせたい。クライアントが何台になるかわからないので、cygwin のインストールを必要条件にしたくない。

- 実行ファイルと cygwin の dll だけをファイルサーバにコピー

cygwin1.dll と diff.exe だけファイルサーバに持っていって、cygwin をインストールしていないクライアントで実行したら以下のエラー。

diff.exe - コンポーネントが見つかりません

cygintl-2.dll が見つからなかったため、このアプリケーションを開始できませんでした。アプリケーションをインストールし直すとこの問題は解決される場合があります。

それも持っていけばいいのかな、と bin ディレクトリを見ると cygintl-2.dll 以外にも cygintl で始まるファイルがある。とりあえずそれらを全部コピー。

diff.exe - コンポーネントが見つかりません

cygiconv-2.dll が見つからなかったため、このアプリケーションを開始できませんでした。アプリケーションをインストールし直すとこの問題は解決される場合があります。

まだ必要なのか。cygiconv-2.dll もコピーしたら動いた。結局コピーしたファイルはこれだけ。

cygiconv-2.dll
cygintl-1.dll
cygintl-2.dll
cygintl.dll
cygwin1.dll

私の環境ではこれで動いた。コマンドプロンプトからは以下のようにして diff を実行できた。

R:\>diff INSTTEST/Programs/Win\00105014 INSTTEST/Programs/Win\00105014.org

2006-04-13 (Thu)

* XCOPY コマンドでディレクトリとファイルの再帰的なコピー

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows]

Windows のコマンドプロンプトや MS-DOS プロンプトで、ディレクトリとファイルを再帰的にコピーしたい。できれば「読み取り専用」などの属性やタイムスタンプも保持してコピーしたい。

Unix だったら tar や cp -R を使うところ。Windows では XCOPY を使えばいいようだ。以下のようにした。

xcopy /S /E /F /G /H /R /K /Y SOURCE DESTINATION

SOURCE から DESTINATION に再帰的にコピーする。上記で指定したオプションの意味は以下のとおり。

/S と /E は、ディレクトリが空でも再帰的にコピーするために指定。
/F は、コピーしたファイル名を表示するために指定。
/G は、暗号化されたドライブを超えてコピーするために指定。
/H は、隠しファイルやシステムファイルなどをコピーするために指定。
/R は、コピー先に読み取り専用ファイルがあってもコピーするために指定。
/K は、ファイルの属性をコピーするために指定。
/Y は、上書き確認を表示しないようにするために指定。

- XCOPY コマンドのヘルプ

以下、WindowsXP SP2 付属の XCOPY コマンドのヘルプ。

C:\>xcopy /?
ファイルとディレクトリ ツリーをコピーします。

XCOPY 送り側 [受け側] [/A | /M] [/D[:日付]] [/P] [/S [/E]] [/V] [/W]
                      [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U]
                      [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z]
                      [/EXCLUDE:ファイル1[+ファイル2][+ファイル3]...]

  送り側      コピーするファイル (複数可) を指定します。
  受け側      新しいファイルの位置や名前を指定します。
  /A          アーカイブ属性のファイルのみをコピーし、属性は変更しません。
  /M          アーカイブ属性のファイルのみをコピーし、アーカイブ属性を解除
              します。
  /D:月-日-年 指定された日付以降に変更されたファイルをコピーします。
              日付が指定されなかったときは、送り側の日付が受け側の日付より
              新しいファイルだけをコピーします。
  /EXCLUDE:ファイル1[+ファイル2][+ファイル3]...
              文字列を含むファイルの一覧を指定します。各文字列はファイルの
              中で別の行でなければなりません。
              文字列がコピーされるファイルの絶対パスの一部と一致した場合、
              そのファイルはコピーから除外されます。たとえば、\obj\ を指
              定するとディレクトリ obj の下のファイルはすべて除外されます。
              .obj という文字列を指定すると .obj という拡張子のファイルは
              すべて除外されます。
  /P          受け側のファイルを作成する前に確認のメッセージを表示します。
  /S          空の場合を除いて、ディレクトリとサブディレクトリをコピーします。
  /E          ディレクトリまたはサブディレクトリが空であってもコピーします。
              /S /E と同じ意味です。/T と同時に指定できます。
  /V          書き込んだ各ファイルを検証します。
  /W          キー入力があるまでコピー開始を待ちます。
  /C          エラーが発生してもコピーを続けます。
  /I          受け側がなく複数のファイルをコピーする場合、受け側をディレク
              トリとしてコピーします。
  /Q          コピー中ファイル名を表示しません。
  /F          コピー中送り側と受け側の全ファイル名を表示します。
  /L          コピーされるファイル名を表示します。
  /G          暗号化をサポートしない受け側に、暗号化されたファイルをコピーす
              ることを許可します。
  /H          隠しファイルやシステム ファイルもコピーします。
  /R          読み取り専用ファイルを上書きします。
  /T          ファイルはコピーせずにディレクトリのみを作成します。ディレク
              トリまたはサブディレクトリが空の場合は除きます。/E と使用すれ
              ばディレクトリやサブディレクトリが空でも作成されます。
  /U          受け側に既に存在するファイルだけをコピーします。
  /K          属性をコピーします。通常の XCOPY は読み取り専用属性を変更し
              ます。
  /N          生成された短い名前を使用してコピーします。
  /O          ファイルの所有権と ACL 情報をコピーします。
  /X          ファイルの監査設定をコピーします (/O を含む)。
  /Y          受け側の既存のファイルを上書きする前に確認のメッセージを表示
              しません。
  /-Y        受け側の既存のファイルを上書きする前に確認のメッセージを表示
              します。
  /Z          再起動可能モードでネットワーク ファイルをコピーします。

環境変数 COPYCMD にスイッチ /Y を設定できます。
これは、コマンド ラインの /-Y で無効になります。

これでエクスプローラを使って手作業でやってたディレクトリコピーをバッチファイル中に記述できる。仕事が一つ減って、かつ間違いが発生しなくなった。よかったよかった。

2006-04-05 (Wed)

* Windows の rmdir コマンドでディレクトリを再帰的に削除

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows]

Windows の コマンドプロンプトや MS-DOS プロンプトでディレクトリを再帰的に削除したい。要するに、Unix の rm -rf と同じことをしたい。以下のようして解決。

rmdir /S /Q TARGET_DIR

以下、WindowsXP SP2 付属の rmdir コマンドのヘルプ。

D:\>rmdir /?
ディレクトリを削除します。

RMDIR [/S] [/Q] [ドライブ:]パス
RD [/S] [/Q] [ドライブ:]パス

    /S      指定されたディレクトリに加えて、そのディレクトリ内のすべての
            ディレクトリとファイルを削除します。ディレクトリ ツリーを削除
            するときに使用します。

    /Q      /S を指定してディレクトリ ツリーを削除するときに、確認の
            メッセージを表示しません。(QUIET モード)

2006-02-16 (Thu)

* レジストリへの追加と削除をレジストリファイルからおこなう

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows]

Windows のレジストリに値を追加したり削除したいとき、regedit.exe から GUI で行う方法の他に、あらかじめ作っておいたレジストリファイルを結合するという方法がある。その方法についてメモ。

- レジストリファイルを使ったレジストリへの追加

追加のとき。

ファイルの先頭行には Windows Registry Editor Version 5.00 という文字列を入れておく。これがないとレジストリファイルとして認識されない。

あとは [] で追加したいキーを指定し、値を列挙するだけ。文字列型であればとくに面倒な型指定も不要だった。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Landscape]
"Domain"="sonic64.com"
"description"=hex(7):a8,30,f3,30,b8,30,cb,30,a2,30,6e,30,e1,30,e2,30,02,30,d7,\
  30,ed,30,b0,30,e9,30,df,30,f3,30,b0,30,01,30,cd,30,c3,30,c8,30,ef,30,fc,30,\
  af,30,01,30,c7,30,fc,30,bf,30,d9,30,fc,30,b9,30,01,30,4c,00,69,00,6e,00,75,\
  00,78,00,01,30,75,00,6e,00,69,00,78,00,01,30,b2,30,fc,30,e0,30,01,30,f3,97,\
  7d,69,01,30,2c,67,01,30,99,65,06,74,01,30,ca,8e,01,30,5d,30,6e,30,d6,4e,e5,\
  65,38,5e,6e,30,e1,30,e2,30,6a,30,69,30,02,30,00,00,00,00
"title"="Landscape - エンジニアのメモ"
"link"="http://sonic64.com/"

description は「複数行文字列値」のためエンコードされている。ちなみに、description に指定した文字列は「エンジニアのメモ。プログラミング、ネットワーク、データベース、Linux、unix、ゲーム、音楽、本、料理、車、その他日常のメモなど。」という当サイト Landscape の説明。

- レジストリファイルを使ったレジストリの削除

削除のとき。- をキーの先頭に付けるだけ。

Windows Registry Editor Version 5.00

[-HKEY_CURRENT_USER\Software\Landscape]

削除の場合、サブディレクトリも再帰的に削除の対象となる。上記の場合、HKEY_CURRENT_USER\Software\Landscape 以下はすべて削除される。

2006-01-24 (Tue)

* Windows のデータ実行防止 (DEP) 機能の適用を除外する

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows] [PC] [ソフトウェア]

私の Athlon64 を搭載した WindowsXP SP2 マシンで IP 電話ソフト Skype を起動したところ、データ実行防止機能が働いて Skype が強制終了された。Skype をデータ実行防止機能の適用対象から外して回避した。

- データ実行防止機能 (DEP) が働いて Skype が強制終了された

IP 電話ソフト Skype Version 2.0.0.69 をインストールして起動したところ、以下のようなダイアログが表示されて強制終了されてしまった。

データ実行防止 - Microsoft Windows

コンピュータ保護のため、このプログラムは Windows により終了されました。

名前: Skype. The whole world can talk for free.

データ実行防止は、ウイルスやその他の脅威による損害の防止に役立ちます。データ実行防止を有効にすると、プログラムによっては正しく実行されない場合もあります。プログラムの更新されたバージョンについては、発行元に問い合わせてください。

WindowsXP SP2 や Windows Server 2003に搭載された新機能「データ実行防止 (DEP - Data Execution Prevention)」機能が働いて Skype を強制終了した模様。データ領域を実行するという手法はパフォーマンスを追求するアプリケーションなどで使うテクニックだそうだが、ウイルスなどもそれを利用してくる。そのため OS は「データ領域の実行」を検出すると、エラーとしてアプリケーションを強制終了してしまう。

この機能は Athlon64 などの データ実行防止機能に対応した CPU (NX ビットが有効になった CPU) などで利用できる。Intel でも EM64T を搭載していれば NX ビットが有効になっていたはず。

プログラムごとにデータ実行防止機能 (DEP) の適用対象から除外する設定をすることができるので、今回はそれで回避することにする。

- Skype をデータ実行防止機能の対象から除外する

マイコンピュータを右クリックして「プロパティ」を選ぶ。
「システムのプロパティ」が表示されるので、「詳細設定」タブを選ぶ。
「パフォーマンス」の囲みの中の「詳細設定」ボタンを押す。
「パフォーマンスオプション」が表示されるので、「データ実行防止」タブを選ぶ。
ラジオボタン「次に選択するのものを除くすべてのプログラムおよびサービスについて DEP を有効にする」を選ぶ。
「追加」ボタンでデータ実行防止機能から除外したいプログラムの実行ファイルを選ぶ。今回は C:\Program Files\Skype\Phone\Skype.exe を指定した。

上記設定を入れて無事 Skype を起動できた。

2006-01-11 (Wed)

* cidaemon.exe が CPU を浪費するのを止める

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows]

とある Windows2003 Server マシンにファイルを大量にコピーしたあと、cidaemon.exe というプロセスの CPU 使用率が跳ね上がってマシンの応答速度が非常に遅くなった。タスクマネージャで見ていると CPU 使用率が100%に張り付いている。

まさかウイルスかスパイウェアにでも感染したのかと一瞬焦ったが、このマシンは一応 Trendmicro の ServerProtect をインストールしている。もちろんパターンファイルも自動更新されるように設定済み。

Google で cidaemon.exe を検索するとヒット。幸いなことにウイルスなどではなかった。cidaemon.exe はファイル検索を速くする IndexService (インデックスサービス) のインデクサとのこと。このサービスを止めれば良い。

(ローカル コンピュータ) Indexing Service のプロパティ

サービス名: cisvc
表示名(&N): Indexing Service
説明(&D): ローカル コンピュータとリモート コンピュータ上のファイルのコンテンツとプロパティにインデックスを付けます。クエリ言語を使用するので、ファイルへ急速にアクセスできます。
実行ファイルのパス(&H): C:\WINDOWS\system32\cisvc.exe

「急速にアクセスできます」って、大量のファイルに急速にアクセスしまくってるのは君だよ。

- Indexing Service を止める

Indexing Service を止めるには、「スタートメニュー」の「設定」の「コントロールパネル」の「管理ツール」の「サービス」で 「Indexing Service」を停止する。また、自動的に起動しないように「スタートアップの種類」を「無効」にしておく。

2005-10-13 (Thu)

* Windows Server 2003のシステム稼働時間 uptime を確認する

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows]

Windows Server 2003のイベントログを見ていたら、システムの稼働時間が定期的にロギングされていることに気づいた。Unix でシステムの稼働時間を表示するには upime コマンドなどを使う。Windows にも稼働時時間を表示するコマンドがありそうだけど、とりあえずイベントログを見ればよい。

イベントの種類:    情報
イベント ソース:    EventLog
イベント カテゴリ:    なし
イベント ID:    6013
日付:        2005/10/13
時刻:        12:00:10
ユーザー:        N/A
コンピュータ:    APHEX2
説明:

システムの稼働時間は 3208998 秒です。

この「システムの稼働時間は 3208998 秒です」という表現は、ドラゴンボールのフリーザのセリフ「私の戦闘力は53万です」みたいで好き。ちなみにマシン名は Aphex Twin からもらった。

2005-09-27 (Tue)

* NTFS でファイル レコード セグメント 読み取れませんエラー

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows] [PC]

やってしまった。iPod のケーブルと間違えて、USB2.0 の外付けハードディスクのケーブルを動作している最中に抜いてしまった。しかも、抜いた後気づくのがかなり遅れた。その結果、USB2.0 の外付けディスクが読めなくなってしまった。

USB2.0 のハードディスクは、2005-03-31 の「USB 2.0 外付けハードディスクケースを購入」で購入したもの。つまり、ケースだけ。中身は Maxtor 96147U8 で、容量は60GB。以前は USB2.0 のカードを使って接続していたが、2005-06-18 の「Athlon64 マシンを自作する」で作った ASUS A8V-E DELUXE /NW に直接接続するようにしている。

- 症状

まず、エクスプローラの起動にかなり時間がかかる。おそらく、該当ドライブのファイルのインデックスを読みに行って、読めないので何度もリトライしているんだろう。イベントログを見ると、以下のエラーが大量に記録されていた。

デバイス \Device\Harddisk2\D に不良ブロックがあります。

この流れはやばい。とりあえず chkdsk コマンドで復旧を試みる。

- chkdsk 実行

コマンドプロンプトから chkdsk を実行。

C:\Documents and Settings\hiroaki>chkdsk f: /F
ファイル システムの種類は NTFS です。
ボリューム ラベルは ボリューム です。

CHKDSK はファイルを検査しています (ステージ 1/3)...
ファイル レコード セグメント 24 を読み取れません。
ファイル レコード セグメント 25 を読み取れません。
ファイル レコード セグメント 26 を読み取れません。
ファイル レコード セグメント 27 を読み取れません。
ファイル レコード セグメント 904 を読み取れません。
ファイル レコード セグメント 905 を読み取れません。
ファイル レコード セグメント 906 を読み取れません。
ファイル レコード セグメント 907 を読み取れません。
ファイル レコード セグメント 968 を読み取れません。
ファイル レコード セグメント 969 を読み取れません。
ファイル レコード セグメント 970 を読み取れません。
ファイル レコード セグメント 971 を読み取れません。
ファイル レコード セグメント 996 を読み取れません。
ファイル レコード セグメント 997 を読み取れません。
ファイル レコード セグメント 998 を読み取れません。
ファイル レコード セグメント 999 を読み取れません。
ファイルの検査を完了しました。
CHKDSK はインデックスを検査しています (ステージ 2/3)...
ファイル 28 内のインデックス $I30 のインデックス エントリ BOARD_~1.ZIPを削除します。
ファイル 28 内のインデックス $I30 のインデックス エントリ BOARD_MEETING20050801.ZIP を削除します。
ファイル 214 内のインデックス $I30 のインデックス エントリ LOG20050912 を削除します。
ファイル 214 内のインデックス $I30 のインデックス エントリ LOG200~1 を削除します。
ファイル 214 内のインデックス $I30 のインデックス エントリ trackdown を削除します。
ファイル 214 内のインデックス $I30 のインデックス エントリ trackd~1 を削除します。
ファイル 641 内のインデックス $I30 のインデックス エントリ 01-Children Dream Version.wav を削除します。
ファイル 641 内のインデックス $I30 のインデックス エントリ 02-Fable Dream Version.wav を削除します。
ファイル 641 内のインデックス $I30 のインデックス エントリ 01-CHI~1.WAV を削除します。
ファイル 641 内のインデックス $I30 のインデックス エントリ 02-FAB~2.WAV を削除します。
インデックスの検査を完了しました。
CHKDSK は破損ファイルを回復しています。
ファイル レコード セグメント 25 のフラグを修復しています。
ファイル 25 の軽度なエラーを修復します。

いくつかのファイルは壊れていて、削除されてしまった。でも、とりあえず chkdsk は終了した。これで復旧できたかな? もう一度エクスプローラを立ち上げても、症状が変わらない。かなり長い時間待たされる。そして、イベントログにはさっきと同じエラーが記録されている。修復できてないの? もしかしたらこのディスク、もう二度と読めないのかも?

もう一度 chkdsk してみる。あんまり意味がないかもしれないけど、今度はもっと多くのオプション付き。

C:\Documents and Settings\hiroaki>chkdsk f: /f /V /R /X
ファイル システムの種類は NTFS です。
ボリューム ラベルは ボリューム です。

CHKDSK はファイルを検査しています (ステージ 1/5)...
ファイル レコード セグメント 24 を読み取れません。
ファイル レコード セグメント 25 を読み取れません。
ファイル レコード セグメント 26 を読み取れません。
ファイル レコード セグメント 27 を読み取れません。
ファイル レコード セグメント 904 を読み取れません。
ファイル レコード セグメント 905 を読み取れません。
ファイル レコード セグメント 906 を読み取れません。
ファイル レコード セグメント 907 を読み取れません。
ファイル レコード セグメント 968 を読み取れません。
ファイル レコード セグメント 969 を読み取れません。
ファイル レコード セグメント 970 を読み取れません。
ファイル レコード セグメント 971 を読み取れません。
ファイル レコード セグメント 996 を読み取れません。
ファイル レコード セグメント 997 を読み取れません。
ファイル レコード セグメント 998 を読み取れません。
ファイル レコード セグメント 999 を読み取れません。
ファイルの検査を完了しました。
CHKDSK はインデックスを検査しています (ステージ 2/5)...
ファイル 5 内のインデックス $I30 のインデックス エントリ found.003 を削除します。
インデックスの検査を完了しました。
ドライブ上の軽度な矛盾をクリーンアップしています。
CHKDSK は破損ファイルを回復しています。
ファイル レコード セグメント 25 のフラグを修復しています。
ファイル 25 の軽度なエラーを修復します。

chkdsk のオプションの意味。/F さえ指定しておけばいいような雰囲気。やっぱり意味無いかな・・と思ったけど、chkdsk のステージ数が 3 から 5に増えてるね。より徹底的にやってくれている模様。
/F              ディスクのエラーを修復します。
/V              FAT/FAT32:ディスクの全ファイルの完全なパスと名前を表示します。
                NTFS: クリーン アップ メッセージがあればそれも表示します。
/R              不良セクタを見つけ、読み取り可能な情報を回復します。
                (/F を意味します)
/X              必要であれば、最初にボリュームを強制的にマウントを解除
                します。ボリュームへ開かれているすべてのハンドルは、無効
                になります。

chkdsk 完了。でも、エクスプローラでアクセスしようとするとやっぱり時間がかかり、イベントログにはエラーが記録される。何回 chkdsk してもこの状態から進まない。症状としては、ファイルのデータそのものはディスク上にはあるんだけど、それにアクセスするためのインデックス情報が破損している。で、chkdsk でそれを修復しようとしたが、修復しきれない状態。

こんな状態でも、サルベージする方法はいろいろあると思う。別のディスクにダンプして生きてるデータだけ吸い出していくとか。でも、そこまでしなくても、今回は何とかなりそう。このドライブは更新頻度が低いデータ保存用ドライブ。CD からリッピングしたデータや、様々なアーカイブを保存している。1ヶ月前に取ったバックアップもある。諦めてフォーマットした方が早い。

フォーマットしたらエラーが出なくなった。で、別ディスクからバックアップをリストア。データはちょっと古いけど、まあ大丈夫。やっぱりバックアップ重要。

- NTFS ってジャーナリングファイルシステムなのに

そういえば、動作中のドライブから SCSI ケーブルを抜いたときの各ファイルシステムの障害耐性を調べたレポートで、ext3 だか何かが怪しい挙動を示したというのをどこかで読んだ気がする。でも、今回の体験をしたので私にとっては NTFS も ext3 も同じレベルだ。いや、むしろクラッシュしたことがない分、ext3 の方が信頼が置ける。個人的経験だけでは信頼性は測れないとはわかっているけど、やっぱり心証的に悪い。

そもそもファイルのインデックスってメタデータで、ファイルシステムのジャーナリング機能で保護されるはず。なのに、今回はしっかりファイルシステム的にクラッシュしたのはなぜ? 突然の電源断には耐えられても、USBケーブルの挿抜には耐えられないってこと? もしかして、USB ストレージのコントローラやドライバが悪いのかな?

2005-09-01 (Thu)

* shutdown.exe とタスクで Windows を自動シャットダウン

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows]

とある理由で、常時稼働の Windows サーバを朝の 07:30 にシャットダウンすることになった。自動でやりたいので方法を探したところ、shutdown.exe というコマンドが標準で Windows にもあることがわかった。これを使えばいい。

- shutdown.exe でシャットダウン

WindowsXP や Windows2003 Server なら標準で shutdown.exe というツールがあるので、これをコントロールパネルのタスクや at から実行するだけ。ACPI に対応したマシンなら、ちゃんと電源まで切れる。

shutdown.exe は -s オプションを付けないと実行してもヘルプを表示するだけなので、忘れずに付ける。これは Linux の shutdown コマンドと同じ挙動だ。ただ、オプションが Linux と微妙に異なる。Windows の shutdown コマンドでマシンをシャットダウンしたいときのオプションは -s だ。shutdown の略なんだろうね。Linux は -h で、halt の略。

以下、WindowsXP 付属の shutdown.exe のヘルプ。

shutdow.exe
使用法: c:\WINDOWS\system32\shutdown.exe [-i | -l | -s | -r | -a] [-f] [-m \\コンピュータ名] [-t xx] [-c "コメント"] [-d up:xx:yy]

    引数なし        このメッセージを表示します (-? と同じです)
    -i            GUI インターフェイスを表示します。このオプ
                ションは最初に指定する必要があります
    -l            ログオフ (-m オプションとは併用できません)
    -s            コンピュータをシャットダウンします
    -r            コンピュータをシャットダウンして再起動します
    -a            システム シャットダウンを中止します
    -m \\コンピュータ名    シャットダウン/再起動/中止するリモート コン
                ピュータの名前です
    -t xx            シャットダウンのタイムアウトを xx 秒に設定
                します
    -c "コメント"        シャットダウンのコメントです (127 文字まで)
    -f            実行中のアプリケーションを警告なしに閉じます
    -d [u][p]:xx:yy        シャットダウンの理由コードです
                u = ユーザー コード
                p = 計画されたシャットダウンのコード
                xx = 重大な理由コード (255 以下の正の整数)
                yy = 重大ではない理由コード (65535 以下の正の
                整数)

コメントや理由コードの指定もできるのか。なかなか高機能。

- Windows2000 で shutdown.exe を使う

Windows2000 には shutdown.exe がない。ただ、私が試した限り、WindowsXP の shutdown.exe を持ち込んで実行したところ、問題なくシャットダウンすることができた。後述する「タスク」との組み合わせも問題なし。試した環境は Windows2000 Server SP4 だ。

ライセンスとかに問題がなければ、使ってみるのも一興。ちなみに、shutdown.exe は WindowsNT の時代からリソースキットに収録されているらしいので、実運用で使うならリソースキットのバイナリを使うのが良いだろう。

- タスクスケジューラと shutdown.exe で日時を指定した自動シャットダウン (無事に成功)

コントロールパネルの「タスク」に shutdown.exe をスケジュールする方法。

タスクを新規追加。
「スケジュールされたタスクの追加」ではなく、右クリックから「新規」の「タスク」を選んだ。shutdown コマンドに -s オプションを渡すように記述するためには、結局タスクのプロパティを開く必要があるからだ。

「実行するファイル」のテキストボックスに shutdown.exe のパスと -s オプションを記述。
私の環境では c:\WINDOWS\system32\shutdown.exe -s と記述した。その後

Administrator のパスワードを入力して設定完了。これだけ。

追記。
タスクと shutdown.exe の組み合わせで無事シャットダウンできた。事前のテストで大丈夫だったから心配はしていなかったが。Windows2003 Server のイベントログには以下のイベントが記録されていた。Windows 2000 のサーバには「イベントログサービスが停止した」という情報くらいしか記録されていなかったんだけど、そういうものだったっけ?

イベントの種類:    情報
イベント ソース:    Application Popup
イベント カテゴリ:    なし
イベント ID:    26
日付:        2005/09/04
時刻:        7:30:02
ユーザー:        N/A
コンピュータ:    BJORK
説明:
アプリケーション ポップアップ: 休む : システムはシャットダウンされます。進行中の作業をすべて保存し、ログオフしてください。保存されていない情報は失われます。シャットダウンは、BJORK\Administrator によって開始されました。シャットダウンは 30 秒後に開始されます。

詳細な情報は、http://go.microsoft.com/fwlink/events.asp の [ヘルプとサポート センター] を参照してください。

イベントの種類:    成功の監査
イベント ソース:    SECURITY
イベント カテゴリ:    システム イベント
イベント ID:    513
日付:        2005/09/04
時刻:        7:30:38
ユーザー:        N/A
コンピュータ:    BJORK
説明:
Windows をシャットダウンしています。 シャットダウンにより、すべてのログオン セッションが終了します。

詳細な情報は、http://go.microsoft.com/fwlink/events.asp の [ヘルプとサポート センター] を参照してください。

- at コマンドから shutdown.exe を使う (失敗)

本当は at コマンドを使ってコマンドラインからスケジュールしたかったのだが、うまくいかなかった。実行アカウントの問題のようだ。以下、試したこと。

at コマンドで shutdown コマンドをジョブに追加。
C:\>at 18:29 /interactive /next:1 "shutdown -s"
新しいジョブをジョブ ID = 31 で追加しました。

追加はできるのだが、いざ時間になると以下のメッセージが表示されてシャットダウンされない。
ログオン セッションは、要求された操作と矛盾する状態です。

うーん、ダメなのか。at で実行アカウントを指定するのってどうやるんだっけ? 調べてる時間がないから、今回はタスクスケジューラでいいか。

2005-07-15 (Fri)

* MicrosoftUpdate 時に 0x800700C1 エラー

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows]

いくつかパッチが出ていたので、試しにテストサーバで MicrosoftUpdate したら不具合発生。アップデート途中でパッチ適用に失敗する。

- 現象

MicrosoftUpdate に失敗する。再試行すると以下のメッセージが出て MicrosoftUpdate できない。
[エラー番号: 0x800700C1]
Web サイトに問題が発生したため、このページを表示できません。次のオプションが、問題の解決に役立つ可能性があります。

テストサーバ群のうち、Windows2000 SP4 がインストールされたものは全滅。Windows2000 SP4 ロールアップ 1 適用時に失敗していた模様。Windows2003 Server では失敗しなかった。

- 対応策

既に MS のサイトに情報がある。

Windows Update や Microsoft Update サイトにアクセスすると 0x800700C1 エラーが表示される
http://support.microsoft.com/default.aspx?scid=kb;ja;904392
概要
この資料は、Windows Update や Microsoft Update サイトにアクセスした際に、エラー 0x800700C1 が発生する現象について説明しています。

現象
Windows Update や Microsoft Update サイトにアクセスした際にエラー 0x800700C1 が表示され、Windows Update や Microsoft Update サイトの利用ができない場合があります。

原因
この現象は、Windows 2000 のコンピュータにおいて、Windows Update や Microsoft Update サイトで、[高速] インストールより、Windows 2000 SP4 対応の更新プログラム ロールアップ 1 (KB891861) をインストールした際に、Windows Update および Microsoft Update に必要な一部のシステムファイル (msxml3.dll および msxml3r.dll) がファイルサイズ 0KB の破損したファイルに置き換えられることが原因で発生します。

解決方法
以下のいずれかの方法にて、この問題を解決することができます。

方法1.
システムフォルダ (%systemroot%\system32) にあるファイルサイズ 0KB の msxml3.dll および msxlm3r.dll のファイル名をそれぞれ msxml3.old、msxml3r.old に変更します。この作業を行うことによって、システムフォルダに正常な msxml3.dll および msxml3r.dll が再生成されます。


方法2.
XML Parser (MSXML) 3.0 SP5をダウンロードセンターより入手して、msxml3.dll および msxml3r.dll を再インストールします。

Microsoft XML Parser (MSXML) 3.0 Service Pack 5 (SP5)
http://www.microsoft.com/downloads/details.aspx?FamilyID=4a3ad088-a893-4f0b-a932-5e024e74519f&DisplayLang=ja

Windows 2000 SP4 ロールアップ 1不具合情報 : 投稿 : HotFix Report BBS
http://bbs.hotfix.jp/ShowPost.aspx?PostID=3358

- 方法1 で対処

方法1 を試してみる。まずはリネーム。コマンドプロンプトで以下を実行。
ren %systemroot%\system32\msxml3.dll msxml3.old
ren %systemroot%\system32\msxml3r.dll msxml3r.old

リネーム後、もういちど MicrosoftUpdate を実行したら無事適用完了。リネームした後にリブートしなくても OK だった。

2005-04-28 (Thu)

* NC715 への Windows2000 インストールと BIOS アップデート

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [PC] [Windows]

父の使っていたマシンであるエプソンダイレクトのノートPC EDi Cube NC715 の BIOS をアップデートし、Windows2000 をインストールした。父は 2005-04-21 に書いた DELL Inspiron2200 を使い始めたので、NC715 はお下がりとしてもらってきた。

- EDi Cube NC715 の BIOS アップデート

現在の BIOS は 0107。新しい BIOS が出ているし、良い機会なのでアップデートしておく。エプソンダイレクトのページから 0109e の BIOS アップデートパッケージをダウンロード。ReadMe を読むと、BIOS アップデートの手順が書いてあった。

■BIOSのアップデート方法

1.アップデートを行なう前に、現在のBIOS設定を控えておいて下さい。本体添付「
  NC715(NC710/NC610) ユーザーズマニュアル」の「BIOS Setupユーティリティの設定値
    に、設定値を記録しておくページをご用意しております。

2.本体添付のリカバリCDをCD-ROMドライブにセットし、電源を入れます。

3.BIOS Setup ユーティリティを起動し、「Boot」メニューより「ATAPI CD-ROM」の
  Boot順位を1番にします。

4.「Exit」メニューより「Exit Saving Changes」を実行して設定内容を保存します。
  コンピュータが再起動します。

5.起動が開始された時に、Ctrlキーを押したままにします。「Microsoft Windows
  Millennium Startup Menu」が表示されるので、↑↓キーを押して「6.Safe mod
  e command prompt only」を選択して、Enterキーを押します。

ハードウェア添付品が必要なのか。父に所在を聞いてみると、「どこにしまったかなー」とか言ってて見つかる気配がない。なんてことだ。仕方がないので手持ちの CD-ROM 倉庫を探す。Windows98 のセットアップ CD-ROM が出てきた。ハードウェア添付品を要求している理由は、ピュアな MS-DOS 環境でアップデータを実行するためだろう。たぶん Windows98 の CD でも問題ないと思う。これでやってみよう。

CD-ROM ブートするように BIOS を設定し、Windows98 の CD から起動。コマンドプロンプトだけで起動するオプションを選択し、BIOS アップデート用ファイルを収めた FD にある BIOS アップデータを実行する。おっ、うまく動いてる模様。よかったー。

あとは BIOS アップデートパッケージの ReadMe に従って作業し、アップデート完了。再起動後、BIOS 設定画面で Load Setup Defaults を選択したあと、自分好みの BIOS 設定に修正して完了。起動時に BIOS Ver.0109e と表示されているし、問題なく終わった。

- NC715 に Windows2000 をインストール

Windows2000 を CD-ROM からインストール。時間はかかったけど、とくに問題なく終了。

- ネットワークに繋がらないよ?

Windows2000 インストール後の起動。あ、色数も解像度も低い。デバイスマネージャを見ると、かなり全滅。SiS630 チップセット用ドライバがインストールされていないようだ。となると、ネットワークにも繋がってないだろうな。すぐに WindowsUpdate したかったのにな。

NC715 のイーサネットは SiS900 という型番。独立したカードではなく、SiS630 チップセットに統合されている。
ドライバを sis のウェブサイトからまずもらってこなくては。http://www.sis.com/download/ を見てもわかりにくいな。統合チップセットのドライバはどれなんだ? しかたがない、とりあえず sis900 のドライバだけをダウンロードするか。ダウンロードして iPod に保存。で、iPod を NC715 に接続。iPod は USB メモリとして使用できるので便利だ。ドライバ要らないし。これでネットワークにつながるようになった。まずは WindowsUpdate だ。

- WindowsUpdate

パッチ42個。ServicePack4 の後にこんなにパッチでがでてたのか。こまめに当ててると気づかないが、結構多いんだなあ。Microsoft も SP4 で打ち止めにせずに SP5 を出してくれれば良かったのに。

完了。

- SiS630 チップセットドライバと VGA ドライバをインストール

さて、ネットワークには繋がるようになったけど、VGA ドライバをインストールしてないので色数と解像度が低いまま。もう一度 sis のウェブサイトに行き、いろいろ探してみる。えーと、これか。って、38MB もあるの? ブロードバンドだからよかったももの、なんでこんなにサイズが大きいんだ?

SiS630/730 Graphic Driver (Win2000/XP)

File name
630_208d_win2kxp.zip
Version
v2.08d
Release date
2002-11-30
Product supported
SiS630S, SiS630ET, SiS540, SiS630E, SiS630, SiS730S, SiS730SE, SiS630ST,
File size
38,257KB
OS supported
Windows 2000, Windows XP,

ダウンロードしてインストール。あー、なんか DirectX とかもインストールしてるな。すごく嫌な予感する。リブートすると・・・OS 立ち上がらなくなってるよ。VGA モードで起動して、ドライバ削除。まだダメだな。VGA モードだと起動するけど、これじゃ使いにくいな。ドライバをインストールし直せばいいかもしれないけど、おなかがすいたから今回はここまでにしよう。

WindowsUpdate のときに先に DirectX がインストールされたのが良くなかったかも。OS インストールしたらチップセットドライバとか全部当てて、そのあとで WindowsUpdate するほうが良かったんだろう。

2005-04-26 (Tue)

* Excel のセル結合を使うと行の高さが自動調整されない

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows]

Office2000 の Excel を使っている。行の高さは自動的に調整されてちょうど良い高さになってくれるが、ときどきそうならない場合があることに気づいた。印刷するとセルの末尾行が切れてしまったり、そもそも画面に表示されないので最後の一文の存在に気づかなかったりと、非常に使いにくい。

調べてみると、「セルの結合」の対象になっている場合は自動調整がされなくなるとのこと。なんでそんな仕様なんだろう? 不便だー。

マクロで行の高さを調整する方法もあるようだけど、そんな手間をかけたくない。

Excel VBA Q&A掲示板
http://www2.moug.net/app/bbs/message.php?cat=exvba&id=20 ...
特定のセルの内容が変わったらマクロを実行する

特定のセルに対して、入力された文字の量に合わせて、行高を自動変更するに
は、どのように記述したらいいでしょうか?
セル結合しているので、EXCEL機能の自動調整が使えません。


マイナーチェンジ版ッス
Option Explicit

Sub オートフィット()
    '特定のセルの結合されている範囲を取得.
    Dim rngTarget As Range: Set rngTarget = ActiveSheet.Range("A1").Me
rgeArea
    '特定のセルを,どこか好きなところへ複写.
    Dim rngTemp As Range: Set rngTemp = Worksheets("PRIVATE").Range("A
1")
    rngTemp.Worksheet.Cells.Clear
    rngTarget.Copy
    rngTemp.PasteSpecial Paste:=xlPasteAll
    '複写先を UnMerge.
    rngTemp.UnMerge
    rngTemp.Copy
    rngTemp.ClearContents
    rngTemp.Copy rngTemp.EntireColumn
    '特定のセルの Width を元に,複写先の ColumnWidth を変更.
    FitColumn rngTemp, rngTarget
    rngTemp.EntireRow.AutoFit
    'オートフィット後の高さ の取得
    rngTarget.Copy rngTemp
    rngTemp.UnMerge
    rngTemp.EntireRow.AutoFit
    '複写先の Height を元に,結合されている範囲の Heightを変更.
    FitHeight rngTarget, rngTemp
End Sub

Private Sub FitColumn(ByVal 対象範囲 As Range, ByVal 目標Width As Rang
e)
    Dim 比率 As Double ' Width / ColumnWidth
    Dim 差分 As Double ' 対象範囲.Width - 目標Width.Width
    Dim Counter As Long '“差分”が収束しないときのガス抜き用
    Dim aColumn As Range
    Dim 幅 As Double '目標Width の ColumnWidth の和
    For Each aColumn In 目標Width.Columns
        幅 = 幅 + aColumn.ColumnWidth
    Next
    対象範囲.EntireColumn.ColumnWidth = 幅
    比率 = 対象範囲.Width / 対象範囲.ColumnWidth
    For Counter = 0 To 9
        差分 = (対象範囲.Width - 目標Width.Width) / 比率
        If Abs(差分) < 0.25 / 比率 Then Exit For
        対象範囲.EntireColumn.ColumnWidth = 対象範囲.EntireColumn.Colu
mnWidth - 差分
    Next
    Debug.Print 対象範囲.Width, 目標Width.Width, Counter
End Sub

Private Sub FitHeight(ByVal 対象範囲 As Range, ByVal 目標Height As Ran
ge)
    Dim Height1 As Double, Height2 As Double
    Dim 差分1 As Double, 差分2 As Double ' 対象範囲.Height - 目標Heigh
t.Height
    Height1 = 目標Height.RowHeight / 対象範囲.Rows.Count
    対象範囲.EntireRow.RowHeight = Height1
    Height1 = 対象範囲.EntireRow.RowHeight
    差分1 = 対象範囲.Height - 目標Height.Height
    Height2 = Height1 - Sgn(差分1) * 0.25
    対象範囲.EntireRow.RowHeight = Height2
    差分2 = 対象範囲.Height - 目標Height.Height
    If Abs(差分1) < Abs(差分2) Then
        対象範囲.EntireRow.RowHeight = Height1
    End If
    Debug.Print 対象範囲.Height, 目標Height.Height
End Sub

変数名に日本語を使うのってなかなか新鮮な感じがする。

新しいバージョンの Excel とか OpenOffice.org なら自動調整してくれるのかな。試す価値はあるかも。

2005-03-01 (Tue)

* Subversion を Windows で GUI 中心に使う

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows] [Subversion]

2005-02-28 の「CVS から Subversion に乗り換え」の続き。Windows 環境で GUI なバージョン管理システムを使うために、Subversion と TortoiseSVN をインストールする。

- Subversion 本体のダウンロード

subversion: ファイルの共有: Windows
http://subversion.tigris.org/servlets/ProjectDocumentList?fo ...

上記ページから以下の実行ファイルをダウンロード。

svn-1.1.3-setup.exe
http://subversion.tigris.org/files/documents/15/20015/svn-1. ...

- Subversion のインストール

ダウンロードした実行ファイルをダブルクリックしてインストール開始。Next を連打してどんどん進める。

インストールが終わったとき、以下のメッセージが表示された。インストール直後の警告やメッセージって、たいていプログラムを動作させるために最低限必要なことだったりすることが多いので、読んでみる。

Information

Please read the following important information before continuing.

When you are ready to continue with Setup, click Next.

Post installation notes for Subversion:

Read the documentation included with this distribution.
For more info - Fire up your browser and point it to:
  http://subversion.tigris.org/ and look for documentation.
Take a close look in the Readme.txt file found in the Subversion folder and  the start menu. It may save you some time if you get into trouble.
Notes for Windows 9x and Millenium users:
Add this line to your Autoexec.bat file (adjust the path so it fits your system) if it's not there:

    SET APR_ICONV_PATH="C:\Program Files\Subversion\iconv"

Restart your machine if your Autoexec.bat file are changed.

Thanks for using Subversion! And..  enjoy..
Your Subversion team

Windows 95系のユーザは 環境変数 APR_ICONV_PATH をセットしろと言ってる。私は Windows2000なので何もせずに続行。無事 Subversion 本体をインストール完了。

- Subversion の GUI クライアント TortioseSVN のダウンロード

Subvresion 本体はインストールしたので、現状でもコマンドラインから使うことはできる。でもコマンドラインではなく GUI から使いたいので、GUI のクライアント TortoiseSVN (とーたすえすぶいえぬ) をインストールする。

Tortoise って最初は とーといず って読んでしまったけど、トータスって読むんだね。トータス松本のトータスだ。亀という意味らしい。

tortoisesvn: TortoiseSVN Downloads
http://tortoisesvn.tigris.org/download.html

上記ページから、以下の2つをダウンロードした。

Version 1.1.3.2502 for NT4/Win2k/XP
http://tortoisesvn.tigris.org/files/documents/406/20001/Tort ...

メニューなどの文言を日本語化するために、Japanese Language Pack もダウンロード。
http://tortoisesvn.tigris.org/files/documents/406/20028/Lang ...

- Subversion の GUI クライアント TortioseSVN のインストール

これもダブルクリックしてインストーラを起動し、あとは Next 連打。超簡単。インストール完了時に OS の再起動を要求されたので再起動。シェル統合とかしてると再起動が必要なんだろうな。

- Subversion リポジトリを作成

まず、リポジトリのデータベースを置きたいディレクトリをエクスプローラから作っておく。今回は d:\svn に作ってみる。

作ったディレクトリを右クリックして TortoiseSVN の中の Create repository here を選ぶ。リポジトリで使うデータベースの種類を尋ねてくる。

Select the type of repository you want to create:

◎ Berkeley Database (BDB)
○ Native Filesystem (FSFS)

デフォルトの Berkeley DB でいいよね。2004-11-09 の 「GMail をバックアップストレージとして使う」で書いたスクリプトを使って、リポジトリは圧縮と暗号化を施して毎日 Gmail に投げる予定だし。万が一 Berkeley DB で何らかの不具合が起きたときは FSFS を試してみることにするけど。

The Repository was sucessfully created.

上記ダイアログが出たら、無事作成完了。

- リポジトリにインポート

インポートしたいディレクトリを右クリックし、import を選択。で、どのリポジトリにインポートしたいかを指定。それだけ。あとは進行状況が表示される。あー楽だ。GUI でできるっていいなあ。

- update, commit

svn update や svn commit も簡単。単に対象を右クリックしてやりたい操作を選ぶだけ。

- 日本語ファイル名への対応

一応日本語のファイル名が通るかどうかを軽くテスト。

リポジトリへの追加、削除、ファイル名の変更、コミットを試したが、とくに問題なく処理がおこなわれた。まあ、個人的には ascii 以外を積極的に使うつもりはないけど。

以下のファイル名で試した。
日)椨狂.txt
ソースコードチェックリスト.txt
能力表.txt

一つめは日本語文字列 + 丸付き数字、全角のローマ数字。日1本II語.txt と書いた。このメモは euc-jp で書いてるけど、utf-8 にすると化けちゃうかな。RSS で読んでる人は適当に脳内で補ってね。
2つめは半角カナ文字。ソースコードチェックリスト.txt と書いた。
3つめは Shift_JIS エンコーディングのときに \ が含まれる能 や 表 を含んだ文字。能力表.txt と書いた。

- subversion には cvs release ってある?

Google で subversion "cvs release" を検索

subversion には cvs release に類するコマンドは存在しない模様。rm -rf などで直接ファイルシステムから削除してしまって構わないようだ。

Subversion スレッド その3
http://pc5.2ch.net/test/read.cgi/linux/1100622362/287-
287 :login:Penguin:05/02/16 00:07:44 ID:FUKFr12X
cvs release -d に相当するコマンドはありますか?
今ググったりして探してるんだけど1.1.3 releasedとかのお知らせばっかり引っ掛かって・・・


288 :login:Penguin:05/02/16 06:24:57 ID:c55Mr6CX
rm -rf しちゃっていいんじゃなかったっけ?
ぐぐるなら、"cvs release" とかクォーティングすれば良いと思われ


289 :login:Penguin:05/02/16 13:30:42 ID:2EWi4Gho
cvs editとか使ってるんでない限り、cvs releaseって必要ないからなぁ。



290 :287:05/02/16 21:46:56 ID:FUKFr12X
>> 288, 289
サンクス。リポジトリ側でバックアップ取って作業コピー rm -rf してみました。
特に問題ない模様。リポジトリ側で誰が作業中かとか管理してたらやだなと思ったの
ですがそこまでしてないみたいですね。


291 :login:Penguin:05/02/17 00:34:54 ID:dOR7Wnf2
管理してないですよ。Subversionはその辺りは一切見ていません。
だって誰がどこを作業してもよいようになっているので。
svn diffやsvn statusだって、何のオプションもつけなかった
わざわざリポジトリにアクセスしません。

- Subversion + TortoiseSVN は実に楽。

しばらくこの環境でやってみよう。Subversion ・・・いや、TortoiseSVN は実に素晴らしい。楽すぎ。Tortoise のスペルは覚えられないけど。コマンドラインと GUI の両方があるとやっぱり楽だなあ。

- Subversion を使う際に参考になったサイト

Subversion - メモ
http://terai.s55.xrea.com/Subversion.html

Subversionの基礎練習
http://www.hyuki.com/techinfo/svninit.html
「CVS の基礎練習」の続編かな。コマンドラインから使う方法を解説してある。

2005-02-28 (Mon)

* CVS から Subversion に乗り換え

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows] [Subversion]

2004-09-04 の「Windows で CVS サーバとクライアントを使う」で書いたように、私は Windows だけで完結する CVS 環境を作り、ソースコードなどのバージョン管理に利用している。でも、やっぱり Windows 環境なんだから GUI を使って手軽にバージョン管理したい。

- GUI だとコミット (チェックイン) をこまめにするようになる

個人的なバージョン管理には前述の CVS を利用しているが、仕事場ではバージョン管理システムとして PVCS と VSS (Visual Source Safe) を使っている。

VSS はなかなか良い。正確に言うと、VSS ではなくて VS.NET が良いんだけど。VS.NET だと ソリューションエクスプローラというところに常にリポジトリが表示されていて、ソースを修正しようとすると、すぐさまチェックアウトするかどうか尋ねるダイアログが出る。もちろん修正後にはソリューションエクスプローラから VSS にチェックインできる。統合開発環境の強みだ。

VS.NET + VSS ではチェックインとチェックアウトが手軽にできるので、「コンパイルが通ったらとりあえずチェックイン」という使い方になってくる。ファイルの新規追加もドラッグアンドドロップだけでできて簡単。とても便利。

- コマンドラインだとコミットを怠りがち

一方、私の CVS 環境はコマンドラインからの操作が中心。GUI だけでできる環境に比べると手間がかかるので、コミット(チェックイン) を怠りがちになる。

当該 CVS を利用しているのは私一人なのでそれでもいいんだけど、コミットの粒度が荒いのでバージョン間の差分が大きくなるのが難点。せっかくバージョン管理システムを使ってるのに、活用し切れてないわけだ。それに、GUI に比べるとファイルの新規追加もちょっと手間がかかる。今回 GUI を使いたいと思った理由はこれらをなんとかしたいと思ったからだ。

バッチファイルやスクリプトを活用すれば解決できるという意見もあるかもしれない。しかし、バージョン管理システム側でそれらを自動生成してくれるのならまだしも、自分で作って管理していくのは煩わしい。タグやブランチ、リポジトリのバックアップくらいの管理作業は厭わないけど、それ以上はやりたくない。bash にくらべて使い勝手が劣る dos プロンプトに縛られたくないし。

- コマンドライン版 CVS の代わりに何を使おう?

では、Windows 環境では コマンドライン版 CVS の代わりに何を使うのが良いんだろう?

リポジトリの互換性や実績などを考慮すると、WinCVS などを使って CVS を使いつつ GUI 化した環境を作るのが無難なところだろう。でも、今回は業務で使うわけではないので互換性や安定性は重視しない。リポジトリも最新版さえインポートできればそれで十分。フリーで便利なバージョン管理システムならなんでもいい。オープンソースでなくてもまあ許容範囲。

ということで Subversion を導入することにした。Subversion はフリーのバージョン管理システム。幸いなことにオープンソース。Windows でも Unix でも使える。Windows のエクスプローラにシェル統合できる TortoiseSVN という GUI クライアントがあるそうなので、それを使ってみることにする。とーたす えすぶいえぬって読むのかな?

ねむくなったので続きはまた明日。

追記。2005-03-01 に 「Subversion を Windows で GUI 中心に使う」を書いた。

2005-02-14 (Mon)

* MS Office のクリップボード12個制限 の警告を止める

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows]

Excel 2000 でクリップボードへのコピーを繰り返していると、「クリップボードには12個までしかデータを保持できない」という趣旨の警告が出る。レジストリを修正することでこの警告の表示を止めることができる。

Officeクリップボードは12個のアイテムしか保持できません

- レジストリを修正してクリップボード12個制限の警告を止める

HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Common\General に AcbControl というキーを dword で追加。値は1を入れる。16進でも10進でもどちらでも良いはず。私は16進数にした。

regedit.exe を使って修正しても良いし、以下のようにレジストリファイルを作って結合しても良い。

レジストリファイルの作り方。メモ帳か何かに以下をペーストして、拡張子 .reg で適当なファイル名をつけて保存する。私は KillClip.reg というファイル名にした。で、ダブルクリックでそのファイルを実行するだけ。
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Common\General]
"AcbControl"=dword:00000001

元に戻すには AcbControl の値を 0 にすればいいらしい。戻す気はないので試してないけど。

- 効果あり

私の環境では、見事にイルカのカイルくんが警告を出さなくなった。環境は Office2000 の Excel。ただし、上部メニューの 表示 -> ツールバー -> クリップボード でクリップボードツールバーを出していると、レジストリを修正していても警告される。

- 「レジストリを修正してクリップボード12個制限の警告を止める」の参考

[OFF2000] Office クリップボード ツール バーが表示されないようにする方法
http://support.microsoft.com/default.aspx?scid=kb;ja;207438& ...

@IT:Windows TIPS -- Tips:邪魔なOffice クリップボードを表示しないようにする
http://www.atmarkit.co.jp/fwin2k/win2ktips/488clipboard/clip ...

2005-01-19 (Wed)

* PostgreSQL 8.0 Windows 版インストールメモ

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Postgres] [Windows]

PostgreSQL 8.0 がリリースされた。今回は Windows ネイティブ版も公式リリースとなった。Windows で無料の DB といえば FireBird や MySQL だったが、より柔軟なライセンスの Postgres が選択肢に入ることになる。

- Windows 版 PosgreSQL 8.0 リリースノートやプレスリリース、ニュース

PostgreSQL: News: PostgreSQL 8.0.0 Released
http://www.postgresql.org/about/news.277
本家。

日本 PostgreSQL ユーザ会 PostgreSQL 8.0 Press Kit
http://www.postgresql.jp/ug/press-release/2005-01.html

PostgreSQL 8.0正式リリース,ロールフォワードやWindows上のネイティブ動作など実現 : IT Pro ニュース
http://itpro.nikkeibp.co.jp/free/ITPro/NEWS/20050119/154938/

PostgreSQL 8.0がリリース - Windowsに正式対応 (MYCOM PC WEB)
http://pcweb.mycom.co.jp/news/2005/01/19/013.html

スラッシュドット ジャパン | PostgreSQL 8.0 リリース
http://slashdot.jp/article.pl?sid=05/01/19/0641233&topic ...

- Windows 版 PosgreSQL 8.0 ダウンロード

Windows 版 PosgreSQL 8.0 のファイルは zip アーカイブでサイズは約17MB。

各地の FTP ミラーや BitTorrent から入手できるが、今日リリースされたばかりなのでミラー待ちだったり混雑していたりする。幸いなことに RingServer にはもうミラーされていたのでそこからダウンロードした。SourceForge にもある。

RingServer の PosgreSQL ミラー
http://www.t.ring.gr.jp/archives/misc/db/postgresql/
http://www.t.ring.gr.jp/archives/misc/db/postgresql/source/v ...
http://www.t.ring.gr.jp/archives/misc/db/postgresql/binary/v ...

SourceForge.net: Project Info - PostgreSQL Database Server
http://sourceforge.net/projects/pgsql/

追記。1月20日の朝に見たら PostgreSQL 日本ユーザ会からもダウンロードできるようになっていた。
PostgreSQL ダウンロード情報
http://www.postgresql.jp/PostgreSQL/download.html

- Windows 版 PosgreSQL 8.0 インストール

Windows2000 Professonal SP4 に Windows 版 PosgreSQL 8.0 をインストールする。

ダウンロードした zip を展開して postgresql-8.0.msi を実行すると、GUI のインストーラが起動する。

最初の画面で詳細なインストールログを出力するかどうかのチェックボックスがあったので、迷わずオンにした。
□ Write detailed installation log to postgresql-8.0.log in the current directory
インストール先のディレクトリは C:\Program Files\PostgreSQL\8.0\ を選択。

基本的には Next を連打してればインストールが進むという、実に Windows らしい作りだ。

- インストールするコンポーネントの選択

インストールするコンポーネントの選択画面。私はデフォルトのまま、とくに何も変更はしなかった。

おおっ、デフォルトで .NET 用のドライバ(データプロバイダ?)もインストールされるんだ。こりゃ楽だ。
The PostgreSQL .NET Driver.
This feature requires 3244KB on your hard drive.

他にも JDBC と ODBC と OLEDB のドライバやプロバイダがデフォルトでインストールされる。

- Service configuration 画面での入力項目

Service configuration 画面には、下の方に注意書きがある。
The service account is the account that runs the PostgreSQL database server. It must NOT be a member of the local administrators group. If you have not already created an account, the installer can do so for you. Enter an account name and a password, or leave the password blank to have one auto-generated.

日本語に超訳すると以下のような感じか。
サービスアカウントは postgres の データベースサーバを実行するアカウントです。サービスアカウントはローカルの Administrators グループのメンバを指定してはいけません。もしアカウントを作っていないなら、インストーラはアカウントを作成することができます。アカウント名とパスワードを入力してください。パスワード欄を空欄にしておくとパスワードを自動生成します。

アカウントの生成機能を使うのは問題ないが、パスワードは自動生成に頼らない方がいい。自動生成は強固なパスワードを生成してはくれるのだが、'Xnd|)p_O|IL!_?=>BZwRF).voXxaIyP' なんてパスワードが設定されるし、生成されたパスワードはメッセージダイアログで表示されるのでコピー & ペーストすることが困難。パスワードはあらかじめ十分強固なものを決めておく方がいい。

ちなみに、指定したパスワードが弱そうな場合は以下のよう警告される。
The password you specified appears weak. Would you like the installer to replace it with a random password?
「指定されたパスワードは弱いようです。ランダムなパスワードで置き換えますか?」といった内容だ。実に至れり尽くせりだ。

前置きが長くなったが、Service configuration 画面での設定項目をメモ。

まず、Windows のサービスとして動かしたいので、Install as a service のチェックボックスはオン。

Service name
Service name は Windows サービスとして登録するときのサービス名。デフォルトの PostgreSQL Database Server 8.0 のままにした。

Account name
Account name はサービスを起動するアカウント名。注意書きにもあったように、Administrators グループのメンバーを起動アカウントとして使うことはセキュリティ的にやってはいけないこと。起動アカウントがなければインストーラがアカウントを作ってくれる。

今回はデフォルトの postgres のままとし、インストーラにサービス起動用アカウントを作ってもらうことにした。

Account domain
Account domain はサービス起動アカウントが属する Windows ドメイン。私が属するデフォルトの develop のままにした。

Account password
Account password はサービス起動用アカウントのパスワード。私はあらかじめ決めておいた十分な長さとランダムネスを持つ文字列を指定した。

Verify password
Verify password はパスワードの確認用入力欄。

項目を入力して次に進もうとすると、以下の確認が来た。develop\postgres というアカウントは存在しないみたいだけど、作る? という内容。もちろん作ってもらった。
User 'develop\postgres' was not found. Would you like the account to be created for you?

- Initialize database cluster データベースクラスタの初期化

要するに Unix 版でもおなじみの initdb 周りの設定。

初期化したいので、Initialize database cluster のチェックボックスはオン。
Port number はデフォルトの 5432。

Locale と Encoding の設定はちょっと迷った。でも、この設定については過去に Postgres のメーリングリストの記事をメモした覚えがある。ChangeLog メモを検索、と。あった。2002-09-12 の「PostgreSQL7.3 以降の configure オプション」だ。この知識は 8.0 でも有効なのかな? そういえば Unicode が見あたらないけど、例によって ClientEncoding で対処するんだろうか? とりあえずメモに従って Locale は C 、Encoding は EUC_JP を選択した。

□ Accept connections on all addreses, not just localhost
上記は接続許可の設定。localhost 以外からの接続は必要ないのでチェックはオフのまま。

あとは、Postgres スーパーユーザのユーザ名とパスワードの入力欄。Postgres スーパーユーザアカウントはサービス起動アカウントとは別物。以下の注意書きにもあるように、セキュリティ的な理由からサービス起動アカウントとスーパーユーザアカウントのパスワードは同じものを使わないこと。
This is the internal database username, and not the service account. For security reasons, the password should NOT be the same as the service account.

- Select procedural languages to enable in the default database ストアドや拡張用言語の選択

ストアドや拡張を書くときに使える言語を選択できる。私の環境では以下の三つが選択可能になっている。PL/pgsql だけかと思ったら、Perl も使えるようだ。ちょっと意外。私のマシンには ActivePerl が入ってるから? それとも常に有効なのかな?

Select procedural languages to enable in the default database

□ PL/pgsql
□ PL/perl
□ PL/perl (untrusted)

- Enable contrib modules その他寄贈されたモジュール

その他寄贈されたモジュール群をインストールするかどうか選択する。

Enable contrib modules

Contrib modules provide additional, often specialised, functionality. Select those you wish to install in the default template database. All files will be installed so modules may be added later simply by executing the appropriate SQL script.

□ B-Tree GiST
□ Chkpass
□ Cube
□ DBlink
□ DBsize
□ Earth Distance
□ Fuzzy String Match
□ Integer Aggregator
□ Integer Array
□ ISBN and ISSN
□ Large Objects (lo)
□ L-Tree
□ Misc. Utilities
□ No Update
□ Trigram Matching
□ pgAdmin Support
□ Crypto. Functions
□ PGStatTuple
□ R-Tree GiST
□ SEG
□ AutoInc
□ Insert Username
□ ModDateTime
□ RefInt
□ Time Travel
□ String IO
□ Table Functions
□ TSearch2
□ User Lock

Deprecated modules:
□ Full Text Index
□ TSearch

DBSize と pgAdmin Support には最初からチェックが付いている。いくつか興味を引かれるものはあるけど、まずはとりあえずデフォルトのままインストールしてみる。

- PostgreSQL is now ready to be installed インストール準備完了

PostgreSQL is now ready to be installed. Click Next to complete the installation.

上記メッセージが出たらインストール準備完了。Next を押してあとはインストールが終わるのを待つだけ。

- Installation complete! インストール完了

以下のメッセージが出たら無事インストール完了。

Installation complete!

Congratulations, PostgreSQL has been successfully installed on your system.
We recommend that you subscribe to the pgsql-announce mailinglist to receive information about new releases and bugfixes.
Click the finish button to exit from the installer.

ちなみに、Subscribe to pgsql-announce のボタンははクリックすると Posgres のアナウンス用メーリングリストの購読申し込み画面 http://mail.postgresql.org/mj/mj_wwwusr?domain=postgresql.or ... をブラウザで開きにいく。とりあえず不要なので購読はしない。

- タスクマネージャを見るといくつか postgres 関連のプロセスが動いている

タスクマネージャを見てみると、postmaster.exe と postgres.exe と pg_ctl.exe が動作中。

- PostgreSQL 8.0 のインストールは実に簡単

うーん、実に簡単だったなあ。ねむくなってきたので今日はここまで。次は pgAdmin を使ってみたり、.NET 用のドライバを使って C# から接続してみたりするとしよう。

2004-12-26 (Sun)

* IIS の再起動コマンド iisreset

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows]

iisreset は IIS を起動・停止・再起動するためのコマンド。

いろんな事情から IIS を一日一回自動で再起動する運用をすることになった。IIS 5.0 であることから、以下の方法を採用した。

以下を iisreset.cmd というファイル名で保存し、at から呼びだす。
echo Start iisreset >>d:\log\iisreset.log
date /T >>d:\log\iisreset.log
time /T >>d:\log\iisreset.log

iisreset /RESTART >>d:\log\iisreset.log 2>&1

date /T >>d:\log\iisreset.log
time /T >>d:\log\iisreset.log
echo Finished iisreset >>d:\log\iisreset.log

at の記述。
at 04:11 /interactive /every:M,T,W,Th,F,S,Su "c:\set_cron\iisreset.cmd"

本当は上記コマンドを呼びだす at 側で d:\log\iisreset.log にリダイレクトしたかったんだけど、そうするとなぜかコマンドが実行されない。at でステータスを確認すると「エラー」と書かれてた。仕方がないので iisreset.cmd 中に記述。at ってコマンドやバッチファイルしか設定できないんだっけ?

エラーになる at
at 04:11 /interactive /every:M,T,W,Th,F,S,Su "c:\set_cron\iisreset.cmd >>d:\log\iisreset.log"

2004-12-09 (Thu)

* Microsoft 製品が使用するポート番号一覧

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows] [ネットワーク]

Microsoft の製品が使用するネットワークポート番号の一覧。

http://www.microsoft.com/downloads/details.aspx?FamilyID=dd6 ...

残念ながら MS Excel 形式での提供。しかも、ダウンロードの方法の説明文が間違っている。「ダウンロードのリンク」は存在せずフォームボタンしかない。

Excel をインストールしてなくても閲覧できるような配慮があるとうれしいんだけどなあ。簡単に参照できるように html 形式でも用意しておくとか。仕方がないので以下に自分用にメモ。Excel は持ってないので OpenOffice.org で開いてコピー & ペーストしたもの。

ブラウザの横幅を広げ、フォントサイズを小さくしないと見づらいかもしれない。でも、こういうリストってポート番号から調べる使い方が多いので、ポート番号さえ左端にあれば十分。何十個もカラムがあるわけでもないし、迅速に閲覧できることが重要。

2004-12-19 追記。詳細な内容を記述した html ページもあった。
Windows: Microsoft Windows サーバー システムのポート要件
http://support.microsoft.com/default.aspx?scid=kb;ja;832017

だめだめ日記(2004-12-19) から。
http://damedame.monyo.com/?date=20041219#p01

- Microsoft 製品が使用するポート番号一覧

Microsoft Windows Server System : ポート番号一覧
http://www.microsoft.com/downloads/details.aspx?FamilyID=dd6 ...
マイクロソフトの製品が利用しているネットワークのポート番号を Excel のシートで参照することができます。

Port    Protocol    Network Service     Network Service (日本語)    System Service    System Service (日本語)    System Service Logical Name
7    TCP    Echo    Echo    Simple TCP/IP Services    簡易 TCP/IP サービス    SimpTcp
7    UDP    Echo    Echo    Simple TCP/IP Services    簡易 TCP/IP サービス    SimpTcp
9    TCP    Discard    Discard    Simple TCP/IP Services    簡易 TCP/IP サービス    SimpTcp
9    UDP    Discard    Discard    Simple TCP/IP Services    簡易 TCP/IP サービス    SimpTcp
13    TCP    Daytime    Daytime    Simple TCP/IP Services    簡易 TCP/IP サービス    SimpTcp
13    UDP    Daytime    Daytime    Simple TCP/IP Services    簡易 TCP/IP サービス    SimpTcp
17    TCP    Quotd    Quotd    Simple TCP/IP Services    簡易 TCP/IP サービス    SimpTcp
17    UDP    Quotd    Quotd    Simple TCP/IP Services    簡易 TCP/IP サービス    SimpTcp
19    TCP    Chargen    Chargen    Simple TCP/IP Services    簡易 TCP/IP サービス    SimpTcp
19    UDP    Chargen    Chargen    Simple TCP/IP Services    簡易 TCP/IP サービス    SimpTcp
20    TCP    FTP default data    FTP default data    FTP Publishing Service    FTP Publishing Service    MSFtpsvc
21    TCP    FTP control    FTP control    FTP Publishing Service    FTP Publishing Service    MSFtpsvc
21    TCP    FTP control    FTP control    Application Layer Gateway Service    アプリケーション層ゲートウェイ サービス     ALG
23    TCP    Telnet    Telnet    Telnet    Telnet    TlntSvr
25    TCP    SMTP    SMTP    Simple Mail Transport Protocol    Simple Mail Transport Protocol    SMTPSVC
25    UDP    SMTP    SMTP    Simple Mail Transport Protocol    Simple Mail Transport Protocol    SMTPSVC
25    TCP    SMTP    SMTP    Exchange Server    Exchange Server
25    UDP    SMTP    SMTP    Exchange Server    Exchange Server
42    TCP    WINS Replication    WINS Replication    Windows Internet Name Service    Windows インターネット ネーム サービス     WINS
42    UDP    WINS Replication    WINS Replication    Windows Internet Name Service    Windows インターネット ネーム サービス     WINS
53    TCP    DNS    DNS    DNS Server    DNS サーバー    DNS
53    UDP    DNS    DNS    DNS Server    DNS サーバー    DNS
53    TCP    DNS    DNS    Internet Connection Firewall/Internet Connection Sharing    インターネット接続ファイアウォール/インターネット接続の共有    SharedAccess
53    UDP    DNS    DNS    Internet Connection Firewall/Internet Connection Sharing    インターネット接続ファイアウォール/インターネット接続の共有    SharedAccess
67    UDP    DHCP Server    DHCP Server    DHCP Server    DHCP サーバー    DHCPServer
67    UDP    DHCP Server    DHCP Server    Internet Connection Firewall/Internet Connection Sharing    インターネット接続ファイアウォール/インターネット接続の共有    SharedAccess
69    UDP    TFTP    TFTP    Trivial FTP Daemon Service    Trivial FTP Daemon Service    tftpd
80    TCP    HTTP    HTTP    Windows Media Services    Windows Media サービス    WMServer
80    TCP    HTTP    HTTP    World Wide Web Publishing Service    World Wide Web 発行サービス    W3SVC
80    TCP    HTTP    HTTP    SharePoint Portal Server    SharePoint Portal Server
88    TCP    Kerberos    Kerberos    Kerberos Key Distribution Center    Kerberos キー配布センター    Kdc
88    UDP    Kerberos    Kerberos    Kerberos Key Distribution Center    Kerberos キー配布センター    Kdc
102    TCP    X.400    X.400    Microsoft Exchange MTA Stacks    Microsoft Exchange MTA Stacks
110    TCP    POP3    POP3    Microsoft POP3 Service    Microsoft POP3 サービス    POP3SVC
110    TCP    POP3    POP3    Exchange Server    Exchange Server
119    TCP    NNTP    NNTP    Network News Transfer Protocol    Network News Transfer Protocol    NntpSvc
123    UDP    NTP    NTP    Windows Time    Windows Time    W32Time
123    UDP    SNTP    SNTP    Windows Time    Windows Time    W32Time
135    TCP    RPC    RPC    Message Queuing    メッセージ キュー    msmq
135    TCP    RPC    RPC    Remote Procedure Call    リモート プロシージャ コール    RpcSs
135    TCP    RPC    RPC    Exchange Server    Exchange Server
135    TCP    RPC    RPC    Certificate Services    証明書サービス    CertSvc
135    TCP    RPC    RPC    Cluster Service    クラスタ サービス    ClusSvc
135    TCP    RPC    RPC    Distributed File System    分散ファイルシステム    DFS
135    TCP    RPC    RPC    Distributed Link Tracking    分散リンクトラッキング    TrkSvr
135    TCP    RPC    RPC    Distributed Transaction Coordinator    分散トランザクション コーディネータ    MSDTC
135    TCP    RPC    RPC    Event Log    イベント ログ    Eventlog
135    TCP    RPC    RPC    Fax Service    Fax サービス    Fax
135    TCP    RPC    RPC    File Replication    ファイル複製    NtFrs
135    TCP    RPC    RPC    Local Security Authority    ローカル セキュリティ機関    LSASS
135    TCP    RPC    RPC    Remote Storage Notification    Remote Storage Notification    Remote_Storage_User_Link
135    TCP    RPC    RPC    Remote Storage Server    リモート記憶域サーバー    Remote_Storage_Server
135    TCP    RPC    RPC    Systems Management Server 2.0    Systems Management Server 2.0
135    TCP    RPC    RPC    Terminal Services Licensing    ターミナル サービス ライセンス    TermServLicensing
135    TCP    RPC    RPC    Terminal Services Session Directory    ターミナル サービス セッション ディレクトリ    Tssdis
137    TCP    NetBIOS Name Resolution    NetBIOS 名前解決    Computer Browser    Computer ブラウザ    Browser
137    UDP    NetBIOS Name Resolution    NetBIOS 名前解決    Computer Browser    Computer ブラウザ    Browser
137    TCP    NetBIOS Name Resolution    NetBIOS 名前解決    Server    サーバー サービス     lanmanserver
137    UDP    NetBIOS Name Resolution    NetBIOS 名前解決    Server    サーバー サービス    lanmanserver
137    TCP    NetBIOS Name Resolution    NetBIOS 名前解決    Windows Internet Name Service    Windows インターネット ネーム サービス     WINS
137    UDP    NetBIOS Name Resolution    NetBIOS 名前解決    Windows Internet Name Service    Windows インターネット ネーム サービス     WINS
137    TCP    NetBIOS Name Resolution    NetBIOS 名前解決    Net Logon    Net Logon    Netlogon
137    UDP    NetBIOS Name Resolution    NetBIOS 名前解決    Net Logon    Net Logon    Netlogon
137    TCP    NetBIOS Name Resolution    NetBIOS 名前解決    Systems Management Server 2.0    Systems Management Server 2.0
137    UDP    NetBIOS Name Resolution    NetBIOS 名前解決    Systems Management Server 2.0    Systems Management Server 2.0
138    UDP    NetBIOS Datagram Service    NetBIOS Datagram Service    Computer Browser    Computer ブラウザ    Browser
138    UDP    NetBIOS Datagram Service    NetBIOS Datagram Service    Messenger    メッセンジャー    Messenger
138    UDP    NetBIOS Datagram Service    NetBIOS Datagram Service    Server    サーバー サービス    lanmanserver
138    UDP    NetBIOS Datagram Service    NetBIOS Datagram Service    Net Logon    Net Logon    Netlogon
138    UDP    NetBIOS Datagram Service    NetBIOS Datagram Service    Distributed File System    分散ファイル システム    Dfs
138    UDP    NetBIOS Datagram Service    NetBIOS Datagram Service    Systems Management Server 2.0    Systems Management Server 2.0
138    UDP    NetBIOS Datagram Service    NetBIOS Datagram Service    License Logging Service    ライセンス ログ サービス    LicenseService
139    TCP    NetBIOS Session Service    NetBIOS Session Service    Computer Browser    Computer ブラウザ    Browser
139    TCP    NetBIOS Session Service    NetBIOS Session Service    Fax Service    Fax サービス    Fax
139    TCP    NetBIOS Session Service    NetBIOS Session Service    Performance Logs and Alerts    パフォーマンス ログと警告    SysmonLog
139    TCP    NetBIOS Session Service    NetBIOS Session Service    Print Spooler    印刷スプーラ    Spooler
139    TCP    NetBIOS Session Service    NetBIOS Session Service    Server    サーバー サービス    lanmanserver
139    TCP    NetBIOS Session Service    NetBIOS Session Service    Net Logon    Net Logon    Netlogon
139    TCP    NetBIOS Session Service    NetBIOS Session Service    Remote Procedure Call Locator    リモート プロシージャ コール ロケータ    RpcLocator
139    TCP    NetBIOS Session Service    NetBIOS Session Service    Distributed File System    分散ファイル システム    Dfs
139    TCP    NetBIOS Session Service    NetBIOS Session Service    Systems Management Server 2.0    Systems Management Server 2.0
139    TCP    NetBIOS Session Service    NetBIOS Session Service    License Logging Service    ライセンス ログ サービス    LicenseService
143    TCP    IMAP    IMAP    Exchange Server    Exchange サーバー
161    UDP    SNMP    SNMP    SNMP Service    SNMP サービス    SNMP
162    UDP    SNMP Traps Outbound    SNMP Traps Outbound    SNMP Trap Service    SNMP Trap サービス    SNMPTRAP
270    TCP    MOM 2004    MOM 2004    Microsoft Operations Manager 2004    Microsoft Operations Manager 2004    MOM
389    TCP    LDAP Server    LDAP Server    Local Security Authority    ローカル セキュリティ機関    LSASS
389    UDP    LDAP Server    LDAP Server    Local Security Authority    ローカル セキュリティ機関    LSASS
389    TCP    LDAP Server    LDAP Server    Distributed File System    分散ファイル システム    Dfs
389    UDP    LDAP Server    LDAP Server    Distributed File System    分散ファイル システム    Dfs
443    TCP    HTTPS    HTTPS    HTTP SSL    HTTP SSL    HTTPFilter
443    TCP    HTTPS    HTTPS    World Wide Web Publishing Service    World Wide Web 発行サービス    W3SVC
443    TCP    HTTPS    HTTPS    SharePoint Portal Server    SharePoint Portal Server
445    TCP    SMB    SMB    Fax Service    Fax サービス    Fax
445    UDP    SMB    SMB    Fax Service    Fax サービス    Fax
445    TCP    SMB    SMB    License Logging Service    ライセンス ログ サービス    LicenseService
445    UDP    SMB    SMB    License Logging Service    ライセンス ログ サービス    LicenseService
445    TCP    SMB    SMB    Print Spooler    印刷スプーラ    Spooler
445    UDP    SMB    SMB    Print Spooler    印刷スプーラ    Spooler
445    TCP    SMB    SMB    Server    サーバー サービス    lanmanserver
445    UDP    SMB    SMB    Server    サーバー サービス    lanmanserver
445    TCP    SMB    SMB    Remote Procedure Call Locator    リモート プロシージャ コール ロケータ    RpcLocator
445    UDP    SMB    SMB    Remote Procedure Call Locator    リモート プロシージャ コール ロケータ    RpcLocator
445    TCP    SMB    SMB    Distributed File System    分散ファイルシステム    Dfs
445    UDP    SMB    SMB    Distributed File System    分散ファイルシステム    Dfs
445    TCP    SMB    SMB    Net Logon    Net Logon    Dfs
445    UDP    SMB    SMB    Net Logon    Net Logon    Dfs
500    UDP    IPSec ISAKMP    IPSec ISAKMP    IPSec Services     IPSec サービス    PolicyAgent
515    TCP    LPD    LPD    TCP/IP Print Server    TCP/IP Print Server    LPDSVC
548    TCP    File Server for Macintosh    File Server for Macintosh    File Server for Macintosh    File Server for Macintosh    MacFile
554    TCP    RTSP    RTSP    Windows Media Services    Windows Media サービス    WMServer
563    TCP    NNTP over SSL    NNTP over SSL    Network News Transfer Protocol    Network News Transfer Protocol    NntpSvc
593    TCP    RPC over HTTP    RPC over HTTP    Remote Procedure Call    リモート プロシージャ コール    RpcSs
593    TCP    RPC over HTTP    RPC over HTTP    Exchange Server    Exchange Server
636    TCP    LDAP SSL    LDAP SSL    Local Security Authority    ローカル セキュリティ機関    LSASS
636    UDP    LDAP SSL    LDAP SSL    Local Security Authority    ローカル セキュリティ機関    LSASS
993    TCP    IMAP over SSL    IMAP over SSL    Exchange Server    Exchange Server
995    TCP    POP3 over SSL    POP3 over SSL    Exchange Server    Exchange Server
1270    TCP    MOM-Encrypted    MOM-Encrypted    Microsoft Operations Manager 2000    Microsoft Operations Manager 2000    one point
1433    TCP    SQL over TCP    SQL over TCP    Microsoft SQL Server    Microsoft SQL Server    SQLSERVR
1433    TCP    SQL over TCP    SQL over TCP    MSSQL$UDDI    MSSQL$UDDI    SQLSERVR
1434    UDP    SQL Probe    SQL Probe    Microsoft SQL Server    Microsoft SQL Server    SQLSERVR
1434    UDP    SQL Probe    SQL Probe    MSSQL$UDDI    MSSQL$UDDI    SQLSERVR
1645    UDP    Legacy RADIUS    Legacy RADIUS    Internet Authentication Service    インターネット認証サービス    IAS
1646    UDP    Legacy RADIUS    Legacy RADIUS    Internet Authentication Service    インターネット認証サービス    IAS
1701    UDP    L2TP    L2TP    Routing and Remote Access    ルーティングとリモート アクセス    RemoteAccess
1723    TCP    PPTP    PPTP    Routing and Remote Access    ルーティングとリモート アクセス    RemoteAccess
1755    TCP    MMS    MMS    Windows Media Services    Windows Media サービス    WMServer
1755    UDP    MMS    MMS    Windows Media Services    Windows Media サービス    WMServer
1801    TCP    MSMQ    MSMQ    Message Queuing    メッセージ キュー    msmq
1801    UDP    MSMQ    MSMQ    Message Queuing    メッセージ キュー    msmq
1812    UDP    RADIUS Authentication    RADIUS 認証    Internet Authentication Service    インターネット認証サービス    IAS
1813    UDP    RADIUS Accounting    RADIUS アカウンティング    Internet Authentication Service    インターネット認証サービス    IAS
1900    UDP    SSDP    SSDP    SSDP Discovery Service    SSDP Discovery Service    SSDPRSRV
2101    TCP    MSMQ-DCs    MSMQ-DCs    Message Queuing    メッセージ キュー    msmq
2103    TCP    MSMQ-RPC    MSMQ-RPC    Message Queuing    メッセージ キュー    msmq
2105    TCP    MSMQ-RPC    MSMQ-RPC    Message Queuing    メッセージ キュー    msmq
2107    TCP    MSMQ-Mgmt    MSMQ-Mgmt    Message Queuing    メッセージ キュー    msmq
2393    TCP    OLAP Services 7.0    OLAP Services 7.0    SQL Server: Downlevel OLAP Client Support    SQL Server: Downlevel OLAP Client Support
2394    TCP    OLAP Services 7.0    OLAP Services 7.0    SQL Server: Downlevel OLAP Client Support    SQL Server: Downlevel OLAP Client Support
2460    UDP    MS Theater    MS Theater    Windows Media Services    Windows Media サービス    WMServer
2535    UDP    MADCAP    MADCAP    DHCP Server    DHCP サーバー     DHCPServer
2701    TCP    SMS Remote Control (control)    SMS リモート コントロール(コントロール)    SMS Remote Control Agent    SMS リモート コントロール エージェント
2701    UDP    SMS Remote Control (control)    SMS リモート コントロール(コントロール)    SMS Remote Control Agent    SMS リモート コントロール エージェント
2702    TCP    SMS Remote Control (data)    SMS リモート コントロール(データ)    SMS Remote Control Agent    SMS リモート コントロール エージェント
2702    UDP    SMS Remote Control (data)    SMS リモート コントロール(データ)    SMS Remote Control Agent    SMS リモート コントロール エージェント
2703    TCP    SMS Remote Chat    SMS Remote Chat    SMS Remote Control Agent    SMS リモート コントロール エージェント
2703    UDP    SMS Remote Chat    SMS Remote Chat    SMS Remote Control Agent    SMS リモート コントロール エージェント
2704    TCP    SMS Remote File Transfer    SMS Remote File Transfer    SMS Remote Control Agent    SMS リモート コントロール エージェント
2704    UDP    SMS Remote File Transfer    SMS Remote File Transfer    SMS Remote Control Agent    SMS リモート コントロール エージェント
2725    TCP    SQL Analysis Services    SQL Analysis Services    SQL 2000 Analysis Server    SQL 2000 Analysis Server
2869    TCP    UPNP    UPNP    Universal Plug and Play Device Host    ユニバーサル プラグ アンド プレイ サービス    UPNPHost
2869    TCP    SSDP event notification    SSDP event notification    SSDP Discovery Service    SSDP Discovery Service    SSDPRSRV
3268    TCP    Global Catalog Server    グローバル カタログ サーバー    Local Security Authority    ローカル セキュリティ機関    LSASS
3269    TCP    Global Catalog Server    グローバル カタログ サーバー    Local Security Authority    ローカル セキュリティ機関    LSASS
3343    UDP    Cluster Services    クラスタ サービス    Cluster Service    クラスタ サービス    ClusSvc
3389    TCP    Terminal Services    ターミナル サービス    NetMeeting Remote Desktop Sharing    NetMeeting リモート デスクトップ共有    mnmsrvc
3389    TCP    Terminal Services    ターミナル サービス    Terminal Services    ターミナル サービス    TermService
3527    UDP    MSMQ-Ping    MSMQ-Ping    Message Queuing    メッセージ キュー    msmq
4011    UDP    BINL    BINL    Remote Installation    Remote Installs BINL サービス    BINLSVC
4500    UDP    NAT-T    NAT-T    Routing and Remote Access    ルーティングとリモート アクセス    RemoteAccess
5000    TCP    SSDP legacy event notification    SSDP legacy event notification    SSDP Discovery Service    SSDP Discovery Service    SSDPRSRV
5004    UDP    RTP    RTP    Windows Media Services    Windows Media サービス    WMServer
5005    UDP    RTCP    RTCP    Windows Media Services    Windows Media サービス    WMServer
42424    TCP    ASP.Net Session State    ASP.Net Session State    ASP.NET State Service    ASP.NET State Service    aspnet_state
51515    TCP    MOM-Clear    MOM-Clear    Microsoft Operations Manager 2000    Microsoft Operations Manager 2000    one point

2004-12-01 (Wed)

* winsntp windows 用 高機能 sntp クライアント

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [ソフトウェア] [Windows]

コンピュータの時計は狂いやすいので、時刻あわせを定期的に行う必要がある。ntp/sntp クライアントを使えば、時刻あわせの作業を自動化できる。私が管理している Windows サーバでは sntp クライアントとして winsntp を使っている。

winsntp セイコープレシジョン株式会社 システムインテグレーション ダウンロード
http://www.seiko-p.co.jp/systems/down/time.html

winsntp はセイコープレシジョン社製の無料で使える ntp クライアントソフトウェアで、以下の機能を持つ。

Windows のサービスとして稼働可能
ntp サーバを3つまで指定可能
sntp クライアントながら、「一定時間間隔で徐々に合わせ、指定時刻には時間を正確に合わせる」といった ntp に近い動作が可能
ログを出力可能

Google で winsntp を検索してもほとんどヒットしないマイナーなソフトウェアであるが、高機能で使いやすい良いソフトウェアだ。

その他の windows 用 ntp クライアントは以下のページが詳しい。

Windows の時刻同期 (NTP な話)
http://www.st.ryukoku.ac.jp/~kjm/ms-windows/ntp.html

追記。
2004-12-02 に「プロバイダ別 ntp サーバリスト」という記事を書いた。

2004-03-14 (Sun)

* Windows のタスクバーボタンのグループ化

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows]

WindowsXP は Windows2000 に比べると重い。しかし諸般の事情で WindowsXP を使わざるを得ないので、余計なアニメーションやエフェクトは全てオフにし、極力 Windows2000と同じ使用感になるように設定していた。

ただ、最近 「WindowsXP も悪くないな」と思った機能があった。「同様のタスクバーボタンをグループ化」というものだ。この機能を有効にすると、同じアプリケーションのウインドウが複数存在した場合に、一個のタスクバーボタンにまとめてくれるようになる。

- タスクバーがすっきり

以前はタスクバーが混み合ったりスクロールバーが出てしまうのを嫌い、必要最小限のアプリケーションしか立ち上げないようにしていた。しかし、この機能を使うようになってからは湯水のようにアプリケーションを立ち上げていても気にしなくなった。アプリケーションを終了させるのが面倒なので、メモリが余ってる限りアプリケーションは立ち上げっぱなしだ。この記事を書いている今現在、十数個のエクスプローラが起動状態になっている。

- 「グループを閉じる」で一気に終了

そんなに立ち上げておくと、いざ終了したいときに大変じゃないか? と思うかもしれないが、その心配もない。「グループを閉じる」という機能があるので、まとめて終了させることができる。とくにエクスプローラなどは作業結果を保存する必要がないので、タスクバーボタンを右クリックして「グループを閉じる」で一気に終わらせることができる。とても便利だ。

- タブブラウザと同じような感覚

「同様のタスクバーボタンをグループ化」の機能は、タブブラウザを使い始めたときと同じような感覚をもたらしてくれた。タブブラウザを使い始めると、サイトの読み込みに時間がかかってもあまり気にしなくなる。10個くらいのリンクを一気に開いて、読み込みが終わったページから閲覧するからだ。範囲指定で複数のリンクを一気に開き、面白そうな内容だったらじっくり読み、そうでないページはすぐさま閉じる。湯水のようにウェブページを消費する感覚だ。

- タブをグルーピングすると便利かも

タブブラウザは今のままでもかなり便利だけど、なんらかの方法でタブをグルーピングできると便利なような気がする。たとえば、同じドメインのページを一つのタブにグループ化するとか。既にそんな機能を持ったブラウザがあるかもしれないな。探してみるか。

Google でタブブラウザ タブ グループ ドメインを検索し、トップでヒットした「タブブラウザ考察」というサイトには、fub というブラウザがグループでタブを管理できると書いてある。
fub
グループによるタブの管理が可能。(タブを多く開く場合に便利)

タブブラウザ考察
http://www.geocities.jp/horiuchimasaru/tabbrowser.html

fub
http://www.geocities.co.jp/SiliconValley-Bay/6049/

fub をインストールして試してみた。タブのグループをさらにタブで切り替えたりすることはできるが、ドメインなどで動的にグルーピングしてくれるのではなさそうだ。他のブラウザも試してみたが、ブックマークをグループで登録しておいて一気に開いたりはできるが、お目当ての機能は見つからなかった。実装されてないということは、あんまり便利な機能ではないのかな。

読み終わったページは閉じたいという本能的欲求がある。
なんとかならないかな。未読管理とかを強化すれば何とかなる?

2004-03-09 (Tue)

* ファイルを右クリックして出てくるコンテキストメニューにアイテムを追加

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows]

ファイルを右クリックしたときに出てくるコンテキストメニューに、「xyzzy で開く」を追加したい。レジストリを操作すればできるのだろうが、煩雑そうで躊躇してしまう。レジストリの編集なんてのははまさにバッドノウハウだと思う。誰かが「バッドノウハウからグッドラッパーへ」の精神で作った、便利なツールがきっとあるはず。

Google でコンテキストメニュー windows カスタマイズを検索したところ、ツールがヒットした。

右クリックメニュー簡単カスタマイズ
http://arena.nikkeibp.co.jp/tec/online/20030131/103651/
http://www.vector.co.jp/soft/win95/util/se055819.html

追加することはできた。ただ、既にある項目を削除することができないのは残念。

- 設定内容

以下をプログラムの場所として設定する。新規ウインドウで xyzzy を立ち上げるのではなく新規タブで開きたいので、xyzzcli.exe を使う。%1 はファイル名。指定しないとファイル名が xyzzycli.exe に渡らない。
C:\Program Files\xyzzy\xyzzycli.exe "%1"

2003-11-29 (Sat)

* IIS 5.0 Web サイトで HTTP 圧縮

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows]

http://www.microsoft.com/japan/technet/prodtechnol/iis/iis5/ ...
動的コンテンツも圧縮できる模様。
クライアントは HTTP 1.1 でなければならない。
オプション周りにバグがあるようで、動的コンテンツ・静的コンテンツ全体で圧縮をするかどうかだけしか設定できないらしい。

2003-11-26 (Wed)

* Windows2000での SSL 証明書の作り方

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows]

ZDNet: Helpdesk - How-To 「Windows 2000 - Development Guide for Business Applications」
http://www.zdnet.co.jp/help/howto/win/win2000/0007complus_vb ...

2003-10-07 (Tue)

* Windows2000/WindowsXP で telnet 時に使う文字コードを設定する

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows]

windows や NT4.0 とは異なる telnet クライアントなので、コマンドで設定する必要がある。

Telnetクライアントの使い方
http://www.atmarkit.co.jp/fwin2k/win2ktips/231telnetcmd/teln ...

set codeset japanese euc
で euc になる。

2003-07-24 (Thu)

* Windowsに超特大ホール SQL Slammer 以上の被害の恐れ

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows]

2003-06-17 (Tue)

* IIS安全対策ガイド

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows]

http://www.atmarkit.co.jp/fwin2k/operation/iissecurity/iisse ...
@IT の 特集記事。Windows 2000 Service Pack 3対応。

2003-06-11 (Wed)

* ロングファイルネームに対応していないプログラムは、命名に配慮しないとファイルの消失を招く

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows]

Windows を使っていても、samba を使っていても、一定の確率で「短いファイル名」が衝突してしまう。
ファイル名が衝突すると、ファイルが上書きされたりすることがある。

Samba 3.0.0β 登場
http://slashdot.jp/article.pl?sid=03/06/10/1818249

Windowsを安心して使えますか?
http://slashdot.jp/comments.pl?sid=100052&cid=334908

2003-05-02 (Fri)

* WindowsXP の zip ファイル透過機能を On/Off する

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows]

- off にする。「ファイル名を指定して実行」で、

regsvr32 /u %windir%\system32\zipfldr.dll
「DllUnregisterServerは成功しました」と出れば完了。

- on にする。「ファイル名を指定して実行」で、

regsvr32 %windir%\system32\zipfldr.dll

- WindowsXPのZIP圧縮フォルダ機能を切って「ファイル検索」の速度を上げる

http://www.ix.sakura.ne.jp/~yoshi/qanda/zipfold.htm

すべての記事の見出し (全1029件)
全カテゴリの一覧と記事の数
カテゴリごとに記事をまとめ読みできます。記事の表題だけを見たい場合は、すべての記事の見出し (カテゴリ別表示) へ。

直近30日分の記事
2007-04-23 (Mon)
2007-03-07 (Wed)
2007-02-27 (Tue)
2007-01-17 (Wed)
2007-01-15 (Mon)
2007-01-14 (Sun)
2007-01-08 (Mon)
2006-12-01 (Fri)
2006-11-22 (Wed)
2006-11-20 (Mon)
2006-11-19 (Sun)
2006-09-30 (Sat)
2006-08-29 (Tue)
2006-08-04 (Fri)
2006-07-27 (Thu)
2006-07-23 (Sun)
2006-07-17 (Mon)
2006-07-10 (Mon)
2006-07-06 (Thu)
2006-07-03 (Mon)
2006-06-29 (Thu)
2006-06-28 (Wed)
2006-06-27 (Tue)
2006-06-25 (Sun)
2006-06-19 (Mon)
2006-06-18 (Sun)
2006-06-15 (Thu)
2006-06-11 (Sun)
2006-06-01 (Thu)
2006-05-30 (Tue)
プロファイル
斎藤 宏明。エンジニアです。宇都宮市に住んでいます。
リンク
RSS
スポンサードリンク
Powered by
さくらインターネット

© 斎藤 宏明 Saito Hiroaki Gmail Address
Landscape - エンジニアのメモ http://sonic64.com/
Landscape はランドスケープと読みます。
ひらがなだと らんどすけーぷ です。