- PR -

Windows起動時にマシン名を変更する方法

投稿者投稿内容
あじぇ
会議室デビュー日: 2006/11/28
投稿数: 5
投稿日時: 2007-01-29 15:54
昔の話なのでうろ覚えなのですが、
sysprepで任意のプログラムを実行できませんでしたっけ。

大量のクライアントを配布する機会がありまして、
めんどくさいのでWSHで処理した記憶があります。
確かそのときは、ホストのMACアドレスを鍵にして、
どっかに置いてあるcsvファイルからホスト名とIPアドレスを
引っ張ってきて設定・・・という感じだったかと思います。

昔のやり方なので、今はもっといい方法があるかもしれませんが、
とりあえずIPアドレスとホスト名の管理は一括でできるかと思います。
参考まで。
hideAki
会議室デビュー日: 2007/01/23
投稿数: 11
投稿日時: 2007-01-29 16:12
■あじぇさん
お返事ありがとうございます!

確かに起動時に一回だけ実行するプログラムを指定するところはありました!

けど、再起動は必要ですよね...
一番始めの疑問に戻ってしまいました...

sysprepの生成ルールが変更できるといい感じなのですが...

引用:

あじぇさんの書き込み (2007-01-29 15:54) より:
昔の話なのでうろ覚えなのですが、
sysprepで任意のプログラムを実行できませんでしたっけ。

大量のクライアントを配布する機会がありまして、
めんどくさいのでWSHで処理した記憶があります。
確かそのときは、ホストのMACアドレスを鍵にして、
どっかに置いてあるcsvファイルからホスト名とIPアドレスを
引っ張ってきて設定・・・という感じだったかと思います。

昔のやり方なので、今はもっといい方法があるかもしれませんが、
とりあえずIPアドレスとホスト名の管理は一括でできるかと思います。
参考まで。


あじぇ
会議室デビュー日: 2006/11/28
投稿数: 5
投稿日時: 2007-01-29 17:04
再起動は避けられないかもしれませんね。

私は結局2回sysprepを走らせてました(記憶が少しずつ戻ってきました^^
一回目のスクリプトはコンピュータ名を直接変えるのではなく、
別のフォルダに用意してあるsysprep.inf(かな?)の情報をスクリプトで
書き換える処理を行っていました。
で、正確な情報を記載したinfファイルを使用して再度セットアップするように
スクリプトからsysprepを実行させるようにしてました。

ドメインに参加、固定のIPを設定、といった環境に影響のありそうな処理は
すべて2回目のセットアップで実行してました。
(もちろん追加コマンドですべての不要なファイルは削除)

結局再起動の数は増えてますが、手で設定するのに比べれば、
時間も正確さも段違いだったので満足しました。
再起動なしが必須であれば仕方ありませんが・・・

引用:

hideAkiさんの書き込み (2007-01-29 16:12) より:
けど、再起動は必要ですよね...
一番始めの疑問に戻ってしまいました...

ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2007-01-29 20:54
引用:

hideAkiさんの書き込み (2007-01-29 15:29) より:
■ちゃっぴさん
すみません!使ってみました。

と、やってみて気づいたんですが、ComputerNameを
自動生成するとマシン名がランダムになるので後で管理できないですね...

sysprepで、マシン名を独自ルールで適用する方法はありますでしょうか??



Sysprep を使用した Windows XP または Windows Server 2003 の自動展開中にコンピュータ名の入力要求がある

という感じで生成されます。

なので組織名に prefix にしたい文字列を入力しておいてある程度見分けをつくようにしておき、組織名が気に入らない場合には、RunOnce で組織名を変更する script 書いてやればいいと思います。組織名は registry に書かれていますので。

ただ、生成された hostname を知るすべが無い可能性があるので、同時に hostname を DB とか event log に出力する script を組み込むとかしておけばいいでしょう。
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2007-01-29 23:28
こんばんわ.

そもそもどうして再起動を回避する必要があるのでしょうか?
※読み返してみましたけど,明確では無さそうだったので.
チャブーン
大ベテラン
会議室デビュー日: 2006/11/25
投稿数: 149
投稿日時: 2007-01-31 02:18
チャブーンです。

話のコシをおるようで恐縮ですが、コンピュータ名を再起動しないで変更したい、というご要望自体はムリでしょう。

まずコンピュータベースのレジストリに格納された情報を変更した場合、コンピュータを再起動しないと反映されないという基本原則があります。

また、たとえばしたのような情報があります。

http://support.microsoft.com/kb/102987/en-us

ここの "ComputerName Control Entries" 項目を見るとわかりますが、コンピュータ名の情報を持っているレジストリキーはシステムのプロパティやAPIから変更が可能な情報がある ComputerName キーとシステムが実際に利用する情報がある ActiveComputerName キーがあります。

コンピュータ名を変更すると ComputerName キーに含まれるレジストリ値がまず書き替えられ、このときにはシステム的にはコンピュータ名は変わりません。システム再起動時にこの値の内容が ActiveComputerName キーに含まれるレジストリ値にコピーされて、はじめてコンピュータ名が変更されるとあります。

ここまで書くと、ActiveComputerName キーに含まれる値を直接書き替えればいいのでは?と思うかもしれませんが、わざわざこのような実装にしてあることから考えて、ActiveComputerName キーを直接いじると Windows に問題が発生するのでしょう。

なお、うえのページにもありますが、これらのレジストリキーやその配下の値は、(レジストリエディタ等で)手動でいじらずに、システムのプロパティか API を使って変えなければならないとありますから、こういう値を手動操作してでも願いを叶えたい、といったことは MS では取り合ってもらえない内容だと思いますよ。
hideAki
会議室デビュー日: 2007/01/23
投稿数: 11
投稿日時: 2007-02-05 11:55
To:みなさん
お返事遅くなって申し訳ありませんm(__)m

色々実験してみて、Sysprepを実行させた状態でイメージを置いておいて
実行時にマシン名を変更してもらうという運用でいこうかなと思います。

究極に手間を省こうとして考えていたのですが、どこかで線を引いかなければ
と考えたら、sysprepで運用するのが一番良いと判断しました。

ちなみにWORKGROUP環境であれば起動状態でマシン名を変更するという方法は分かりました
JSI Tip 0285 - Change ComputerName without rebooting.
http://www.jsifaq.com/SF/Tips/Tip.aspx?id=285
このツールを利用すればできるようですが、ドメイン環境ではうまくいきませんでした。

■あじぇさん、kazさん
究極に手間を省こうと考えた結果、マシン名も動的に変わればいいなという判断で
仕様にしていました。。。時間を考えたらここが今のベストだと思いました。
けど、この先できるに越したことないので、新しい技術が出てくればまた、検証してみたいと思います。
(Sysprepは起動時に時間がかかるのがやっぱり気にかかるので...)

■ちゃっぴさん
なるほど、そんなルールがあるのですね!組織名「VM」で後は個人IDを起動時に書き込んでもらう方法にしてみようと思います。
活用させて頂きますm(__)m

■チャブーンさん
結局、そうなんですね。。。

しかし、BackDoorさんが紹介してくれた「Ardence」なんかでは起動時にマシン名を変更して起動しているみたいなので
技術的にはできるんだろうと踏んで調べていたのですが...
内部的な情報は契約とかすれば教えてくれるのでしょうか...
今はコストのことを考えるとそこまでできないのが現状です。

実際できていることが解決できないのは技術者としてくやしいところですが、いつまでも引きずっても仕方ないので今回は
「sysprep」を利用することで決着つけようと思います。

みなさん、色々な意見・アイデア沢山ありがとうございます。
試せたこと・試せないことがあり、お答え頂いたアイデアがすべてこなせなかったことを申し訳なく思います。

けど、みなさんのおかげでなんとか活用できるところまで行きました。
また、何かの機会で質問することがあった時はまたよろしくお願いします。
私もできるだけ、いい情報を出せるようにがんばりますm(__)m

スキルアップ/キャリアアップ(JOB@IT)