- PR -

CasPolコマンドのファイルパス(フルパス)について

1
投稿者投稿内容
オサム
会議室デビュー日: 2006/12/22
投稿数: 3
投稿日時: 2007-03-28 14:24
.NETFrameworkに同梱している「CasPolコマンド」を使用して、
お客様のクライアント(約1200台)のセキュリティポリシーを変更しようとしています。

クライアント数が大量なので、バッチファイル(拡張子bat)を作成して
その中に「CasPolコマンド」を記述しておき、
バッチファイルを実行するだけでクライアントのセキュリティーポリシーを
変更するようにしたいと思っています。

「CasPolコマンド」は.NETFramework1.1であれば、
「%SystemRoot%\Microsoft.NET\Framework\v1.1.4322\caspol.exe」に存在するので、
実行するコマンドは
「%SystemRoot%\Microsoft.NET\Framework\v1.1.4322\caspol -machine -chggroup ・・・」となり
.NETFramework2.0であれば
「%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\caspol.exe」に存在するので、
実行するコマンドは
「%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\caspol -machine -chggroup ・・・」となります。

お客様のクライアントにどのバージョン(リビジョン)の.NETFrameworkが
インストールされているか判らないのため、
中間のフォルダの「v1.1.4322」および「v2.0.50727」フォルダは
クライアントにインストールされているバージョン(リビジョン)に
よって動的に変わると思うので、リリースされているバージョンの数だけ
「CasPolコマンド」のファイルパスが存在するのでコマンドはその数分
用意しないといけないと思っています。

「System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory()」を
使用すれば取得できるかと思いますが、
お客様のご要望によりバッチファイルで作成しなければなりません。

私が調べた限り.NETFramework1.1では「v1.1.4322」で
.NETFramework2.0では「v2.0.50727」のそれぞれ一つずつしか
存在しないように思えるのですが、真意の程はいかがなのでしょうか?
他のバージョン(つまりフォルダ名)が存在するのでしょうか?
存在するのであればそのバージョン(フォルダ名)を教えていただけないでしょうか?
ご存知の方がいらっしゃいましたらご教示の程、よろしくお願いいたします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-03-28 15:37
まず、サイド バイ サイド実行について学ぶ

次に、顧客にアクティブ ディレクトリの導入を勧める


下の下:コマンド ツールで、help if をしてみる
_________________
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2007-03-28 16:31
CasPolコマンドって、.NET Fremaworkそのものに入ってましたっけ?
前に調べたときSDKに付属するツールだったような記憶が。。。

管理ツールにあるFrmaworkの構成ツールでmsiファイルとして設定を吐き出して
それを実行してもらうほうがいいような。。。

あと、1.1のセキュリティ環境と2.0のセキュリティ環境はまた別のものになります。
作成したアプリケーションにあわせて必要な設定を行うことが重要でしょうね。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-03-29 22:24
 2.0 で作成したアセンブリは、1.x では動作しない。
 1.1 で作成したアセンブリは、2.0 と 1.1 が入っている環境では 1.1 で動作する。2.0 しか入っていない環境では 2.0 で動作する。

 よって、SxS について知っていて、且つ、配布するアプリケーションがどのバージョンで作られたかを知っていれば、実行環境に同じバージョンを用意しなければならないこともわかるため、各クライアントでどちらのバージョンが入っているか調査する必要はない。


 アクティブ ディレクトリが構築されていれば、サーバから設定をプッシュできるので、各クライアントで設定を実行する必要はない。


 ということを勧めた上で、それでもバッチファイルで実行しなければ行けないんだ!!と言うなら、if コマンドのヘルプを見ることを勧める。
if exist %SystemRoot%\Microsoft.NET\Framework\v1.1.4322\caspol.exe (
%SystemRoot%\Microsoft.NET\Framework\v1.1.4322\caspol -machine -chggroup ・・・
) else (
if exist %SystemRoot%\Microsoft.NET\Framework\v2.0.50727\caspol.exe (
%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\caspol.exe -machine -chggroup
))
_________________
saki1208
ベテラン
会議室デビュー日: 2006/08/22
投稿数: 86
投稿日時: 2007-03-30 00:58
saki1208です。

こんなのは?

cd %SystemRoot%\Microsoft.NET\Framework
dir caspol.exe /s /b > d:\caspol.lst
for /f %i in (d:\caspol.lst) do %i -machine -chggroup …

そういえば、「PowerShell」ならこんな何行も書かなくていいのになぁ...

[ メッセージ編集済み 編集者: saki1208 編集日時 2007-03-30 00:58 ]

[ メッセージ編集済み 編集者: saki1208 編集日時 2007-03-30 01:07 ]
オサム
会議室デビュー日: 2006/12/22
投稿数: 3
投稿日時: 2007-03-30 10:59
Jitta様、どっとねっとふぁん様、saki1208様
返信ありがとうございます。
参考にさせていただきます。
1

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