ワンポイント.NET管理テク
── ここが気になる.NET管理のヒント ──
第1回 .NET Frameworkのインストールで置換/追加されるファイル
デジタルアドバンテージ 小川 誉久
2007/05/16
.NET対応のアプリケーションを実行するには、コンピュータに.NET Frameworkがインストールされていなければならない。.NET Frameworkは、.NETアプリケーションが利用するコンポーネントやクラスなどをまとめたランタイム・ライブラリ(ランタイムとして使われるクラス・ライブラリ)だ。
.NET Frameworkは、Windows Server 2003およびWindows Vistaには最初からインストールされている。またプレインストール版のWindows XPでは、当初から.NET Frameworkがインストールされているケースもある。コンピュータに.NET Frameworkがインストールされているかどうかを知りたければ、関連記事 を参照されたい。
.NET Frameworkがまだインストールされていなければ、マイクロソフトのWebサイトから無償で入手できる。ダウンロード・センター からマニュアルでダウンロードしてコンピュータにインストールしてもよいし(“.NET Framework”で検索)、対象のコンピュータからMicrosoft Update(Windows Update)にアクセスして、.NET Frameworkをインストールすることもできる。
歴史的な経緯から、.NET Frameworkにはいくつかのバージョン(1.0、1.1、2.0、3.0)がある。.NETアプリケーションの実行には、基本的にそのアプリケーションが使用している.NET Frameworkと同じバージョンのものをインストールする必要がある。例えば2.0は1.1を包含していないので、1.1と2.0対応の.NETアプリケーションをそれぞれ実行したければ、双方のバージョンの.NET Frameworkをインストールする必要がある(とはいうものの、.NET Frameworkは下位互換性を考慮して設計されているため、例えば2.0の環境では、たいていの1.x対応のアプリケーションは動作する)。
ただし、3.0は2.0を包含しているので、3.0がインストールされていれば、2.0はインストールしなくてもよい(.NET Framework 3.0の構成については、
関連記事 を参照)。
管理者から敬遠される.NET Frameworkのインストール
このように.NETアプリケーションの実行には不可欠な.NET Frameworkだが、聞くところによれば、コンピュータへの.NET Frameworkのインストールにネガティブな反応を示すシステム管理者が多いという。.NET Frameworkの追加によって、システムが不安定になるのではないか、既存のアプリケーションに副作用が発生するのではないかと心配しているようである。確かに、「フレームワーク(=枠組み)」という名前から考えると、追加によってシステムの根幹部分が変更されてしまう印象がある。
システムの安定稼働を重視するのは管理者として当然のことではあるが、いたずらな先入観で最新技術の導入にブレーキをかけてもいけない。そこで本稿では、実際にコンピュータ(Windows XP SP2)に.NET Framework 2.0をインストールし、どのようなファイルが更新/追加されるのかを調査してみた。もちろん、ファイル一覧を見たところで、システムに及ぼす影響のすべてを見通すことはできないが、.NET Frameworkを知るための参考程度にはなるだろう。
.NET Frameworkのインストールで更新/追加されるファイル一覧
Windows XP SP2に.NET Framework 2.0を追加して、更新/追加されるファイルを調べた結果は以下のリストのとおりであった。リストでは、C:\WindowsにWindowsシステムがインストールされたコンピュータでの結果を示している。すべてのファイル/フォルダについて説明するのは冗長なので、注目すべきポイントだけをリストを示した後で説明しよう。
■ユーザー・プロファイル・フォルダ(C:\Documents and Settings\<User Name>)
Application Data\Microsoft\CryptnetUrlCache\
Local Settings\Temp\ASPNETSetup_00000.log
Local Settings\Temp\dd_netfx20MSI5397.txt
Local Settings\Temp\dd_netfx20UI5397.txt"
■Program Filesフォルダ(C:\Program Files)
Common Files\Microsoft Shared\DW\
Internet Explorer\MUI\0409\mscorier.dll
■Windowsフォルダ(C:\WINDOWS)
●直下
wiadebug.log
wiaservc.log
assembly\
●(C:\WINDOWS\inf)
AER_1025.ADM
AER_1028.ADM
AER_1031.ADM
AER_1033.ADM
AER_1036.ADM
AER_1040.ADM
AER_1041.ADM
AER_1042.ADM
AER_2052.ADM
AER_3082.ADM
●(C:\WINDOWS\ Installer)
1331a6.msi
●(C:\WINDOWS\system32)
dfshim.dll
mscoree.dll
mscorier.dll
mscories.dll
netfxperf.dll
perfc009.dat
perfc011.dat
perfh009.dat
perfh011.dat
MUI\0409\mscorees.dll
●(C:\WINDOWS\system32\wbem)
AutoRecover\1EBE968EB7AF815A32641E6185350A9E.mof
Logs\mofcomp.log
Logs\wbemess.log
Logs\wmiadap.log
Logs\wmiprov.log
Repository\FS\INDEX.BTR
Repository\FS\INDEX.MAP
Repository\FS\MAPPING.VER
Repository\FS\MAPPING1.MAP
Repository\FS\MAPPING2.MAP
Repository\FS\OBJECTS.DATA
Repository\FS\OBJECTS.MAP
----------------------------------------------------
●(C:\WINDOWS\WinSxS)
Manifests\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd.cat
Manifests\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd.manifest
Manifests\x86_System.EnterpriseServices_b03f5f7f11d50a3a_2.0.0.0_x-ww_7d5f3790.manifest
Policies\x86_policy.8.0.Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_x-ww_77c24773\
x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd\
x86_System.EnterpriseServices_b03f5f7f11d50a3a_2.0.0.0_x-ww_7d5f3790\
----------------------------------------------------
■<Microsoft.NETフォルダ>(C:\WINDOWS\Microsoft.NET\Framework)
NETFXSBS10.exe
netfxsbs12.hkf
sbs_diasymreader.dll
sbs_iehost.dll
sbs_microsoft.jscript.dll
sbs_microsoft.vsa.vb.codedomprocessor.dll
sbs_mscordbi.dll
sbs_mscorrc.dll
sbs_mscorsec.dll
sbs_system.configuration.install.dll
sbs_system.data.dll
sbs_system.enterpriseservices.dll
sbs_VsaVb7rt.dll
sbs_wminet_utils.dll
sbscmp10.dll
sbscmp20_mscorwks.dll
sbscmp20_perfcounter.dll
SharedReg12.dll
v1.0.3705\installutil.exe.config
v1.0.3705\mscormmc.cfg
v1.0.3705\mscormmc.dll
v1.1.4322\gacutil.exe.config
v1.1.4322\regsvcs.exe.config
■(C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727)
_DataOracleClientPerfCounters_shared12_neutral.h
_DataOracleClientPerfCounters_shared12_neutral.ini
_dataperfcounters_shared12_neutral.h
_dataperfcounters_shared12_neutral.ini
_NetworkingPerfCounters.h
_Networkingperfcounters.ini
Accessibility.dll
AdoNetDiag.dll
alink.dll
AppLaunch.exe
Aspnet.config
aspnet.mof
aspnet_compiler.exe
aspnet_filter.dll
aspnet_isapi.dll
Aspnet_perf.dll
aspnet_perf.h
aspnet_perf.ini
aspnet_regbrowsers.exe
aspnet_regiis.exe
aspnet_regsql.exe
Aspnet_regsql.exe.config
aspnet_state.exe
aspnet_state_perf.h
aspnet_state_perf.ini
aspnet_wp.exe
AspNetMMCExt.dll
CasPol.exe
CLR.mof
CORPerfMonExt.dll
CORPerfMonSymbols.h
corperfmonsymbols.ini
csc.exe
csc.exe.config
cscomp.dll
cscompmgd.dll
Culture.dll
CustomMarshalers.dll
cvtres.exe
dfdll.dll
dfsvc.exe
diasymreader.dll
dv_aspnetmmc.chm
EventLogMessages.dll
fusion.dll
IEExec.exe
ieexec.exe.config
IEExecRemote.dll
IEHost.dll
IIEHost.dll
ilasm.exe
InstallCommon.sql
InstallMembership.sql
InstallPersistSqlState.sql
InstallProfile.SQL
InstallSqlState.sql
InstallSqlStateTemplate.sql
InstallUtil.exe
InstallUtilLib.dll
InstallWebEventSqlProvider.sql
ISymWrapper.dll
jsc.exe
Microsoft.Build.Engine.dll
Microsoft.Build.Framework.dll
Microsoft.Build.Tasks.dll
Microsoft.Build.Utilities.dll
Microsoft.Build.xsd
Microsoft.Common.Tasks
Microsoft.CSharp.targets
Microsoft.JScript.dll
Microsoft.JScript.tlb
Microsoft.VisualBasic.dll
Microsoft.VisualBasic.Vsa.dll
Microsoft.VisualC.Dll
Microsoft.Vsa.dll
Microsoft.Vsa.tlb
Microsoft.Vsa.Vb.CodeDOMProcessor.dll
Microsoft.Vsa.Vb.CodeDOMProcessor.tlb
Microsoft_VsaVb.dll
MmcAspExt.dll
MSBuild.exe
MSBuild.rsp
mscordacwks.dll
mscordbc.dll
mscordbi.dll
mscoree.tlb
mscorie.dll
mscorjit.dll
mscorld.dll
mscorlib.dll
mscorlib.tlb
mscorpe.dll
mscorrc.dll
mscorsec.dll
mscorsn.dll
mscorsvc.dll
mscorsvw.exe
mscortim.dll
mscorwks.dll
ndpsetup.ico
ngen.exe
normalization.dll
PerfCounter.dll
peverify.dll
RegAsm.exe
RegSvcs.exe
regtlibv12.exe
sbscmp20_mscorlib.dll
shfusion.chm
shfusion.dll
ShFusRes.dll
SOS.dll
sysglobl.dll
System.configuration.dll
System.Configuration.Install.dll
System.Data.dll
System.Data.OracleClient.dll
System.Data.SqlXml.dll
System.Deployment.dll
System.Design.dll
System.DirectoryServices.dll
System.DirectoryServices.Protocols.dll
System.dll
System.Drawing.Design.dll
System.Drawing.dll
System.Drawing.tlb
System.EnterpriseServices.dll
System.EnterpriseServices.Thunk.dll
System.EnterpriseServices.tlb
System.Management.dll
System.Messaging.dll
System.Runtime.Remoting.dll
System.Runtime.Serialization.Formatters.Soap.dll
System.Security.dll
System.ServiceProcess.dll
System.tlb
System.Transactions.dll
System.Web.dll
System.Web.Mobile.dll
System.Web.RegularExpressions.dll
System.Web.Services.dll
System.Web.tlb
System.Windows.Forms.dll
System.Windows.Forms.tlb
System.XML.dll
TLBREF.DLL
UninstallPersistSqlState.sql
UninstallPersonalization.sql
UninstallRoles.sql
UninstallSqlState.sql
UninstallSqlStateTemplate.sql
vbc.exe
vbc.exe.config
VsaVb7rt.dll
webengine.dll
WMINet_Utils.dll
XPThemes.manifest
●(C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\1033)
alinkui.dll
cscompui.dll
CvtResUI.dll
vbc7ui.dll
Vsavb7rtUI.dll
●(C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ ASP.NETWebAdminFiles)
App_Code\WebAdminPage.cs
App_Data\GroupedProviders.xml
App_GlobalResources\AppConfigCommon.resx
App_LocalResources\error.aspx.resx
WebAdminHelp.aspx
navigationBar.ascx
AppConfig\App_LocalResources\SmtpSettings.aspx.resx
AppConfig\SmtpSettings.aspx
Images\requiredBang.gif
Providers\App_LocalResources\providerList.ascx.resx
Providers\ProviderList.ascx
Security\App_LocalResources\setUpAuthentication.aspx.resx
Security\Permissions\App_LocalResources\createPermission.aspx.resx
Security\Permissions\managePermissions.aspx
Security\Roles\App_LocalResources\manageSingleRole.aspx.resx
Security\Roles\manageSingleRole.aspx
Security\security.aspx
Security\Users\addUser.aspx
Security\Users\App_LocalResources\editUser.aspx.resx
Security\Wizard\App_LocalResources\wizardAddUser.ascx.resx
Security\Wizard\wizardAddUser.ascx
●(C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG)
DefaultWsdlHelpGenerator.aspx
web.config
web_hightrust.config
web_hightrust.config.default
web_lowtrust.config
web_lowtrust.config.default
web_mediumtrust.config
web_mediumtrust.config.default
web_minimaltrust.config
web_minimaltrust.config.default
Browsers\goAmerica.browser
●(C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild)
Microsoft.Build.Commontypes.xsd
Microsoft.Build.Core.xsd
●(C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MUI\409)
mscorsecr.dll
●(C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RedistList)
FrameworkList.xml
リストを眺めながら
リストを見れば分かるとおり、ほとんどのファイルは、.NET Frameworkのインストールによって追加されるC:\WINDOWS\Microsoft.NET\Framework\フォルダ以下に納められる。
■C:\WINDOWS\assembly
Windowsフォルダ(C:\WINDOWS)の直下には、Windows Image Acquisition(WIA)サービスのログ(wiadebug.log、wiaservc.log)に加え、“assembly”という特殊フォルダが作成される。この特殊フォルダは、.NET FrameworkがDLL地獄を解消するために備えているGAC(Global Assembly Cache)というバージョン管理メカニズムに使用される。GACとDLL地獄の関係については、関連記事 を参照のこと。
■C:\WINDOWS\system32
system32フォルダにもいくつかのファイルが追加されている。system32フォルダは、デバイス・ドライバなど、Windowsシステムの根幹にかかわるシステム・ファイルが保存されるところなので、どのようなファイルが追加されるのか気になるところだろう。各ファイルの内容は次のとおりである。
ファイル
内容
dfshim.dll
ClickOnce機能をサポートするライブラリ
mscoree.dll
.NET Runtimeの実行エンジン。.NETアプリケーションを実行すると、Windowsによってこのファイルがロードされ、実行される
mscorier.dll
Microsoft .NET Runtime IE resources
mscories.dll
Microsoft .NET IE SECURITY REGISTRATION
netfxperf.dll
MMCコンソールで動くパフォーマンス・カウンタ・スナップイン
いずれも、.NETアプリケーション以外の実行には影響を及ぼさないものと考えられる。
■C:\WINDOWS\system32\wbem
フォルダ名のwbemは、Web-based Enterprise Managementの略で、エンタープライズ環境での組織的なコンピュータ管理を行うための技術を指す。Windowsシステムの監視や制御を可能にするWMI(Windows Management Instrumentation)は、WBEMの実装の1つだとされる。詳細は不明だが、システム管理にまつわるログや各種情報などが追加されているようだ。
■C:\WINDOWS\WinSxS
このフォルダは、複数のアプリケーションから呼び出されるWin32共有アセンブリ(共有コンポーネント)の格納場所である。共有アセンブリは、マニフェストと呼ばれるバージョン管理情報によって管理 されており、DLLの競合発生(いわゆるDLL地獄)を防止する(共有アセンブリの詳細については関連記事 を参照)。
■C:\WINDOWS\Microsoft.NET\Framework
.NET Frameworkのインストールによって追加されるほとんどのファイルは、このフォルダ以下に保存される。ほとんどのファイルは、.NET対応アプリケーションから呼び出されるランタイム(DLLファイル)である。
個々のファイルの機能などはここでは解説しないが、これらのファイルは、.NET対応アプリケーションの実行時にのみ使われるもので、既存アプリケーションの実行には影響を及ぼさないと考えてよいだろう。
レジストリへの情報追加
これまでに述べたのは、.NET Frameworkのインストールによってファイル・システムに追加されるファイル群であった。これ以外にも、.NET Frameworkをインストールすると、レジストリに大量の情報が追加される。ここでは詳細は述べないが、ほとんどは.NET Frameworkによって追加されるクラス情報の追加であり、こちらも既存アプリケーションへの影響は考えにくい。
IE 7よりも安全(?)な.NET Frameworkのインストール
以上、.NET Frameworkのインストールによって、コンピュータにもたらされる変化について駆け足で見てみた。もちろん、今回の結果だけで、.NET Frameworkのインストールに起因する既存アプリケーションへの影響(副作用)などが発生しないという保証はない。しかし追加されるファイル群を眺めてみると、影響が及ぶ可能性は低いことが分かるだろう。
例えとして適切かどうか分からないが、Internet Explorerの新版であるInternet Explorer 7(IE 7)への更新の方が、よほど危険性が高いのではないかと感じる。IE 7へのバージョン・アップでは、ブラウザ関連のコンポーネントがまとめて更新され、HTMLレンダリングなどで実行されるコードが大きく変更されるため、既存アプリケーションへの影響が大きいと考えられるからだ(実際、IE 7のインストールによって、互換性問題が発生したという報告は少なくない)。
特に大規模な展開に当たっては十分なテストが不可欠とはいえ、.NET Frameworkの追加によって、互換性問題が引き起こされるリスクはそれほど大きくなさそうである。最新の開発環境を利用できる.NET環境では、ソフトウェアの開発生産性が極めて高いといわれる。そうした最新技術の恩恵を情報システムに積極活用すべく、管理者として.NET Frameworkを正しく評価する必要があるだろう。
Windows Server Insider フォーラム 新着記事
スキルアップ/キャリアアップ