Out of Memory

本ブログは更新を停止しました。Aerieをよろしくお願いいたします。

目次

Blog 利用状況

ニュース

2009年3月31日
更新を停止しました。引き続きAerieを御愛顧くださいませ。
2009年2月3日
原則としてコメント受付を停止しました。コメントはAerieまでお願いいたします。
詳細は2月3日のエントリをご覧ください。
2008年7月1日
Microsoft MVP for Developer Tools - Visual C++ を再受賞しました。
2008年2月某日
MVPアワードがVisual C++に変更になりました。
2007年10月23日
blogタイトルを変更しました。
2007年7月1日
Microsoft MVP for Windows - SDKを受賞しました!
2007年6月20日
スキル「ニュース欄ハック」を覚えた!
2006年12月14日
記念すべき初エントリ
2006年12月3日
わんくま同盟に加盟しました。

カレンダー

中の人

αετο? / aetos / あえとす

シャノン? 誰それ。

顔写真

埼玉を馬鹿にする奴は俺が許さん。

基本的に知ったかぶり。興味を持った技術に手を出して、ちょっと齧りはするものの、それを応用して何か形にするまでは及ばずに飽きて放り出す人。

書庫

日記カテゴリ

Program Filesのお引っ越し

今使ってるヘボノートPC、メモリ1GBしかないのに無理にVista入れてますw
ReadyBoost使えばパフォーマンス改善するのかなぁ…対応USBメモリ持ってないけどww

さて、ちょっと前にじゃんぬさんの所でWindows のパーティションをどう切り分けるか?という話題がありました。
俺は「Program FilesはCドライブ」って答えたんですけど…

先日、ノートに搭載されてる内蔵ドライブの空き容量が2GBを切っちゃって、マイコンピュータ上での容量バーがヤバげに赤くなってしまいました(スクリーンショット残ってないや)。
ということで、思い切ってProgram Filesフォルダを、500GBある外付けディスクに移動することを計画。

しかし、じゃんぬさんへのレスにも書いたけど、Windowsをインストールしただけで、かなりのファイルがProgram Filesに置かれます。
その後、新規にインストールするものだけ別ドライブってのはなんとなくヤダ。
どうせなら、Program Files丸ごと別ドライブに移したいわけです。

が、フォルダのパスがD:\Program Filesに変わっちゃうと、既存のプログラムが動かなくなってしまう。
フォルダパスはC:\Program Filesのまま、別のドライブに移すことなんてできるのか?

…実はできるんです。

マイコンピュータを右クリックして管理ディスクの管理を開きます。
ボリュームを選んでドライブ文字とパスの変更追加を押すと、ドライブ文字の変更の他に次の空のNTFSフォルダにマウントするというのがあります。
これを使うと、任意のボリュームを、あたかもフォルダであるかのように見せかけることができるんです。
これで、500GBの外付けHDDの中に作ったパーティションを、C:\Program Filesとして使うことができます。

まず、外付けHDDを単一パーティションで使っていたので、既存のパーティションをちょっと縮めて、新しいパーティションを作ることにします。
とはいえ、パーティションの編集なんて日常的にやる作業でもないのに、高い金を出してPartition Magicとか買うのも馬鹿らしいので、フリーのツールを探します。
今回は、GParted LiveCDを使いました。CDブートのLinuxながら、USB接続のNTFSディスクが扱えるというスグレモノです。
あらかじめ、対象ドライブをデフラグをしておくことを忘れずに。

次は、Program Filesフォルダを、この外付けパーティションに移さなければなりません。
Program Filesフォルダの中のファイルは、Windowsを実行していれば、何かしら使われているため、移動することができません。
そこで、Windowsを実行していない時に移動しなければならないのですが、別のPCを持っていない身としては、なんとかこのマシンで作業したい。
でも、DOSの起動ディスクなんかではNTFSにアクセスできない。
というわけで目を付けたのがWindows PEです。Windowsのセットアップやトラブルシューティング用に使える、起動ディスクの新しい形ですね。XPとVistaで利用できます。
起動ディスクを作るのは面倒なので、既にあるものを応用します。そう、Vistaのセットアップディスクです。Windows Vistaのインストーラも、このWindows PEテクノロジでできているんですね。

さて、いよいよ作業に入りましょう。

Windows Vistaのインストールディスクを突っ込んで、CDから起動します。
プロダクトキーの入力ダイアログが出たところで、そっちは無視してShift + F10。コマンドプロンプトが出てきました。
まずはdiskpartコマンドで、Program Filesとして使う予定のボリュームのドライブレターを確認します。Windows PEを使っているときは、普段Windowsを使っている時とはドライブレターが違うことがあります。
diskpartはパーティションをいじるツールなのですが、こいつではGPartedみたいに既存のパーティションのリサイズはできません。なのでこいつは、ドライブレターの確認のためだけに使いました。

フォルダごと移動なのでxcopyを使おうと思ったら、「Vistaからはrobocopyを使え」って言われたのでそっちを。
Program Filesを丸ごと移動するのですが、ちょっと注意。
新しいボリュームをProgram Filesフォルダとして使うので、外付けボリュームに移動するのはProgram Filesの中身だけです。
空のProgram FilesフォルダはC:ドライブに残しておく必要があります。

移動中にちょっとした事故が発生。どうも処理に失敗している模様。
見ると、Program Files\Windows NT\アクセサリというフォルダで移動エラーが発生しています。
dir /aで見ると、このフォルダ、同じWindows NT内にあるAccessoriesというフォルダへのジャンクションです。
リンク先のAccessoriesが先に移動されて削除されてしまったのでエラーになっているんですね。
Ctrl+Crobocopyを中断し、アクセサリを削除。このジャンクションはあとで復活させます。

移動が終わったら、次は外付けボリュームをC:\Program Filesにマウントします。
Windowsを起動するときっとエラーが大量に出るので、引き続きWindows PE上で作業します。
GUIのコンピュータの管理は使えないので、コマンドプロンプトでなんとかします。
このマウントに使うのはmountvol
まずは一度mountvolとだけ打ち込んで、目的のボリュームのGUIDを確認しておきます。
続いて mountvol "C:\Program Files" <さっき確認した長ったらしいGUID> と入力。実際にはGUID部分はコピペです。
最後にもう一度、素でmountvol。目的のGUIDの下にC:\Program Filesって出てれば成功。

さて、緊張の瞬間。
裏で放置していたVistaのセットアップをキャンセル、PCを再起動して、Windowsを通常起動します。…成功。
無事Windowsが起動したら、コンピュータの管理を開きます。
外付けボリュームに通常のドライブレターが割り振られているので、これを削除。
それから、mklinkコマンドを使って、C:\Program Files\Windows NT\アクセサリを復活させておきます。

これでお引っ越し作業はすべて完了。今のところ、特にエラーは発生していません。

2007_07_15_vistacompmgr

投稿日時 : 2007年7月15日 0:59

Feedback

# re: Program Filesのお引っ越し 2007/07/15 1:05 ちゃっぴ

Mount point とか junction はすべての application が完全に対応しているわけではないので注意が必要です。

XP の場合には、例の方法使えば、%programfiles% も変更できるんですけど、Vista では試してない。

# re: Program Filesのお引っ越し 2007/07/15 2:45 シャノン

> 注意が必要です。

ヤなこと聞いちゃったなぁ。
もしダメなら…どうしよう? 諦めて、OSインストール後にインストールするプログラムだけ別ドライブにするしかないか。

# re: Program Filesのお引っ越し 2007/07/15 2:45 シャノン

> 例の方法

winnt.sif?
今度再インストールするときはやってみます。

# re: Program Filesのお引っ越し 2007/07/15 11:43 じゃんぬねっと

パーティション マジックでやっているような危険なレジストリ置き換えにチャレンジしたツワモノっていますか?

# re: Program Filesのお引っ越し 2007/07/15 12:17 ちゃっぴ

>> 例の方法
> winnt.sif?

うい。Vista だと方法が違うんじゃないかなと思っていたり。


> パーティション マジックでやっているような危険なレジストリ置き換えにチャレンジしたツワモノっていますか?

%PROGRAMFILES% はやったことはないですけど、"Document and Settings" ならありますね。

Registry をいじる場合、主となる部分を置き換えるだけじゃだめで、絶対参照している path をすべて置き換える必要があるんですが、REG_BINARY とかは検索に引っ掛からないので、そういうところまで考慮するのが大変ですね。

# re: Program Filesのお引っ越し 2007/07/16 14:10 シャノン

Program Filesボリューム、デフラグするとBSODになるww
テラワロスwww

orz

# re: Program Filesのお引っ越し 2007/07/16 17:40 ちゃっぴ

> Program Filesボリューム、デフラグするとBSODになるww

そんな身近に落とし穴があるとはね。。。

# re: Program Filesのお引っ越し 2007/07/16 22:52 じゃんぬねっと

しっかし、このあたりももうちょっと自由性を持たせてくれてもいいと思うのですよね > Windows

視覚的なカスタマイズは豊富になってきましたが、こういったところも何とかして欲しいです。

# 引越し 2007/07/18 9:40 .

.

# re: [EeePc]ジャンクションにしてあげる 2009/01/22 11:23 Garbage Collection

re: [EeePc]ジャンクションにしてあげる

タイトル
名前
Url
コメント