Windows NTのメモ

WindowsNT について勉強したことをメモしていきます。 自分用のメモなので読みにくいかもしれませんが、お役に立てれば幸い。(^^
時間がないので、見た目が極めて貧弱ですが怒らないで(^^;


基本事項

アクセス権

  1. プロパティからアクセス権いじれる。
  2. R W X D P O とNTFSアクセス権の種類は多い。
  3. ディレクトリのアクセス権は、「そのディレクトリ自身に対するアクセス権」と、「その下に新規に作られるファイルのデフォルトのアクセス権」の対 になっている。(RWX)(RX)のように、前のディレクトリアクセス権、後ろにファイルアクセス権を書く。例えば、(RWX)(RX)では、フォルダ は、書きこみ可能で、新たにファイルを追加できるが、新規に作られたファイルは、デフォルトでは、読取専用になっていることを表している。
  4. ディレクトリの下に新規にディレクトリを作った場合、新規ディレクトリのアクセス権は、親ディレクトリと同じになる。
  5. 特殊なアクセス権の設定の仕方、サブフォルダも変更する場合の仕方。
  6. 複数のグループにユーザーが所属している場合、そのユーザーのアクセス権は、各グループに与えられたアクセス権の和になる。
  7. 但し、例外として、「アクセス権なし」は、優先される。例えば、Everyone に対して「アクセス権なし」を設定してしまうと、誰もそのファイルを読むことができなくなってしまう。
  8. 読み取りなどのアクセス権に対しては、administratorも普通のユーザーと同じ。(UNIXと違うので注意) administratorに読み取り許可を与えていない場合、そのままでは、administratorは、読めない。しかし、所有権の取得(O)は、 administratorは、全てのファイルに対して所有者になれる(たぶん)。だから、administrator権限がないファイルをいじる必要に 迫られた場合は、一旦そのファイルの所有者になってから、自分にアクセス権を与える。
  9. 共有のアクセス権は、また別にある。共有アクセス権で許可されていても、元のアクセス権で許可されていなければ駄目。(共有アクセス権は、使用しないでいいと思う。)

コマンドライン

GUIというのは、やはり大量の処理するのには、あまり向いてないですね。プログラムを書いた方が便利なことが多々あります。ここでは、MS-DOSの基本的な説明、DIR、CD、リダイレクトなどの話しはしません。

基本操作

  • 矢印キーでコマンド履歴を操作できる。
  • F7でコマンド履歴がでる。
  • start . (←ドット)でカレントディレクトリをWindows 上に開くことができる。
  • 長いパス名の場所へ CDするときは、NT Exploreで、そのフォルダを表示して、コマンド画面にドラッグアンドドロップして、パス名をコピーすると便利

ヘルプの見方

コマンドラインから、
コマンド名 /?
と入力すると、そのコマンドのヘルプが見れる。
(例) for /? | more
net use のように2語で一セットのコマンドは、 net use /? のようにしてみる。 ごくたまにだが、リソースキットコマンドなどで | more がうまくいかない場合がある。これは、標準エラーに出力されているためらしい。コマンド名 /? 2> filename  と標準エラーを一旦ファイルに保存して、それから、more /e filename とする。(/eを指定しないとうまくいかない。何か、仕様が変) 「スタート」-「ヘルプ」-「Windows NTコマンドレファレンス」からもたどれる。(リソースキットのヘルプはもちろんないが)

環境変数

環境変数は、%name%に収められている。
echo %USERNAME%
で現在ログインしているユーザー名が出力される。
(応用例) ホームディレクトリの指定に c:\home\%USERNAME% のようにできたはず。

環境変数の一覧は、
set でみれる。 find が UNIXのgrep と同じようなコマンドなので、 set | find /I “user” などとすると、userという文字を含む環境変数が出力される。/I は、大文字と小文字を区別しないという指定。grep と違い、 ” “で検索文字を指定する必要があることに注意。 (ちなみに、find は、正規表現を使うことができない。)

キャレット文字

予約されているシェル文字
& | < > ( ) ^
予約されているシェル文字をエスケープさせるには、キャレット(^ )文字を使う。
例えば、
echo <dir>
は、エラーになるが、
echo ^<dir^>
は、うまく機能する。

For文

便利だけれども意外に知られていないのがFor文

●構文
For 変数 in セット do コマンド
例えば、
For %I In (*.*) do echo %I
とすると、そのディレクトリの一覧が出力される。
Z\>echo test.txt
などといった式が出てきるのがうっとうしいときは、@を使用する。
For %I In (*.*) do @echo %I

(応用例)
あるディレクトリにある html ファイルを一覧するHTML文章作成する。
For %I In (*.html) do @echo ^<a href=”%I”^>%I^</a^>^<br^> >> Index.html

( )の中身は、空白で区切って複数のものを指定できる。例えば、(*.html *.htm)とすると、両方にマッチするものを指定することができる。

●For文で複数のコマンドを実行する場合は、&でコマンドをつなぐ。
(例)For %I In (*.*) do @echo %I & copy %I z:\backup

● ファイルに対する操作( /f スイッチ)
for /f “delims=, tokens=1,2″ %I In (user.csv) do @echo %I %J
delims=, は、区切り文字を , にすると指定している。
tokens=1,2 は、区切り文字で区切られた、1番目の2番目を取り出してくるとしている。
%I に一番目の値が割り当てられ、アルファベット順で次にくる%Jに2番目の値が割り当てられる。

●ディレクトリの操作 ( /D スイッチ )
For /d %d In (c:\winnt\*) do @echo %I
は、winntディレクトリの下にあるディレクトリの一覧を作成します。これを利用して次のような操作をすることができます。
For /d %d In (“c:\winnt\*”) do @for %J In (“%d\*.ttf”) do @echo %J
これは、winnt の下にあるディレクトリの中の拡張子がttfのファイルの一覧を出力します。

●/r [パス名] でサブディレクトリも含めて指定できます。
for /r c:\ %I in (*.bat *.cmd) do @echo %I
で、cドライブにあるすべての*.bat , *.cmdファイルを表示できます。


インストール編

アクセス権

Windows NT を標準でインストールすると、普通のユーザーでも、winnt などの重要なフォルダを勝手にいじれるようになっている。つまり、一般ユーザーがローカルマシンのディレクトリの中身を書き換えて、ソフトウェア的に壊し てしまうことができるわけだ。これは非常にダサい。しかし、一般ユーザーに対するアクセス制限をかけて、かつ、うまく運用するのは、かならずしも簡単では ない。Windows NT用のソフトウェアは、Windows95 98 をメインの対象として作られており、WindowsNT用の設定に対する配慮が欠けているからだ。(MS-Office がそのような配慮にかけるソフトの一つである。MSちゃんしっかりして。)

実は、Microsoftのホームページからダウンロードできるとあるホワイトペーパに、一般ユーザーに対するアクセス制限のかけ方が書いてある。しかし、そこに書かれているとおりにしてもうまくいかない。(ひぇー。)

  • とりあえず、金内さんのページの「WindowsNTについて」という文章を参考にしてインストールしてみよう。
  • このままでは、一般ユーザーは、ヘルプが読めない。ヘルプは一番最初みるときに、そのヘルプファイルがあるフォルダに*.GDIを作成するからだ。GDIファイルは、一度作ればいいので、作ってしまいましょう。
    for /r .\ %I in (*.hlp) do @%I && sleep 1 & kill -f winhlp32.exe
    sleep 、kill は、リソースキットのコマンド。実行したヘルプを終了させるため使用。 また、%I の後ろは、 && としなければうまく動作しない。また、
    kill -f winhlp32.exe && echo hoge
    のように kill 文の後ろにコマンドを付け加えてもいけない。
  • Wordアートは、Winnt\ArtGalry.cag が読み取り専用になっていると使えないらしい。このファイルに対しては、一般ユーザーに変更のアクセス権を与えましょう。
  • Wordは、一番最初に起動したときに、ユーザー名を作成者とするNormal.dotという標準テンプレートファイルを作成する。そして、それ を標準では、Program Files以下のMS-Officeのテンプレートディレクトリに保存しようとする。しかし、テンプレートディレクトリを一般ユーザーに変更の許可を与え るのは、ちょっといや。これを解決する方法としては、二通り考えられる。
    • こちらで標準テンプレートをあらかじめ用意しておく。(この時、標準テンプレートを作成したユーザーのプロファイルをデフォルトユーザーのプロファイルにコピーすることを忘れないように)
    • 各ユーザーのホームディレクトリにテンプレートファイルをおく。

    うちは、一番面倒の少ない前者を採用しているが、ユーザー作成者情報が残る後者も魅力的。

  • VBAがそのままでは、起動しない。一度、administratorでVBAを使っておくと、winntフォルダになんかのファイルを作成するらしい。その後は、VBAが一般ユーザーでも使える。
  • ともかく、administratorでアプリケーションソフトをいろいろ使ってみて、必要なファイルを作成し、そのadministratorのプロファイルをデフォルトユーザーのプロファイルとして使用するわけだ

ショットカットで、コマンドラインオプション指定

うちでは、Zドライブを各ユーザーのホームディレクトリに指定しているが、ここへ、情報をためるように、指定する。MS-Officeなどのデフォ ルトディレクトリは、ソフトウェアからオプションを選んで指定できる。しかし、フリーソフトなどは、そのような指定がないものがある。このようなときは、 コマンドラインオプションを含むショートカットを作って対処する。例えば、Qgrepというソフトは、ショートカットに-Iオプションをつけて、Zドライ ブに初期化ファイルを置くようにした。

ログオンスクリプト

工事中
ユーザードライブの割り当て、
時刻あわせ(各コンピュータで一般ユーザーに時刻あわせての許可をあたえておくことに注意)
使用するコンピュータごとにインストールされているアプリケーションが異なる場合のデスクトップショートカット

移動プロファイル

工事中


運用編

授業で使うフォルダのアクセス権

(http://www.shiraume.ac.jp/~kurasawa/NTRAQ.htm より)
配布物:教員の授業ディレクトリへのショートカットを作らせておく。学生に読み取りの許可を与えておく。
提出物:提出用フォルダに学生に書きこみの許可を与えておく。学生のグループ名をstudentsとして解説する。学生の提出したファイルが互いに見られ てもよい場合、提出フォルダの設定は、students「追加と読み取り」(RWX)(RX)、Creator Owner「変更」(RWXD)(RWXD)とする。互いに見られては困るときは、studentsに「特殊なアクセス権」として、(RWX)(指定な し)を設定する。Creator Owner は、ファイルやフォルダを作成したユーザーを指し、この場合、提出した学生を指す。つまり、ファイルを提出した学生本人は、自分の提出したファイルの変更 ができることになる。

さて、WindowsNTでは、上記のようにして行う事ができたが、Windows2000では、アクセス権の設定がかなり細かくなって上記の方法では、うまくいかない。 取りあえず、次のようにすると目的は、達成できるようだ。
提出先に使用したいフォルダのプロパティを開き、 「継承可能なアクセス許可を親からこのオブジェクトに継承できるようにする」のチェックをはずす。 次に、「詳細」ボタンをクリックする。studentsをクリックして選択した後、「表示・編集」をクリックする。 適用先のところを「このフォルダのみ」として、フォルダの実行や読取、データの追加など必要なアクセス権に チェックを入れる。 このとき、サブフォルダとファイルの削除には、チェックを入れない点に注意。そして、「OK」を押すと、適用先を このフォルダのみとしているために、上記のNTでやったのと同じような結果になるようだ。
CreateOwner等の設定は、前と同じにすることをお忘れなく。