質問者
4月21日のWindowsUpdate後、新規のaspxファイルが実行できなくなった

質問
-
(本トラブルは未解決ですが質問者は諦めてOS再インストールを行いました)
よろしくお願いいたします。
本日WindowsServer2008を開いたところ、Windowsアップデートが行われておりました。
昨日の15時ごろまでサーバー上で作業し、その時は何もかもが正常に動作しておりました。WindowsUpdateのログは17時30分となります。
その後いつも通り、プロジェクトを更新しようとしたところ、更新したaspxファイルが軒並み次のようなエラーとなり実行できなくなってしまいます。
もともと存在するファイルは実行可能ですが、更新する必要がある状況です。
例外の詳細: System.Runtime.InteropServices.ExternalException: プログラムを実行できません。実行しようとしたコマンドは "C:\Windows\Microsoft.NET\Framework\v2.0.50727\vbc.exe" /noconfig @"C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\43f530ce\45733bb3\5gbud7ux.cmdline" です。
[ExternalException (0x5): プログラムを実行できません。実行しようとしたコマンドは "C:\Windows\Microsoft.NET\Framework\v2.0.50727\vbc.exe" /noconfig @"C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\43f530ce\45733bb3\5gbud7ux.cmdline" です。] System.CodeDom.Compiler.Executor.ExecWaitWithCaptureUnimpersonated(SafeUserTokenHandle userToken, String cmd, String currentDir, TempFileCollection tempFiles, String& outputName, String& errorName, String trueCmdLine) +2204 System.CodeDom.Compiler.Executor.ExecWaitWithCapture(SafeUserTokenHandle userToken, String cmd, String currentDir, TempFileCollection tempFiles, String& outputName, String& errorName, String trueCmdLine) +122 System.CodeDom.Compiler.CodeCompiler.Compile(CompilerParameters options, String compilerDirectory, String compilerExe, String arguments, String& outputFile, Int32& nativeReturnValue, String trueArgs) +195 Microsoft.VisualBasic.VBCodeGenerator.FromFileBatch(CompilerParameters options, String[] fileNames) +466 System.CodeDom.Compiler.CodeCompiler.System.CodeDom.Compiler.ICodeCompiler.CompileAssemblyFromFileBatch(CompilerParameters options, String[] fileNames) +197 System.CodeDom.Compiler.CodeDomProvider.CompileAssemblyFromFile(CompilerParameters options, String[] fileNames) +25 System.Web.Compilation.AssemblyBuilder.Compile() +775 System.Web.Compilation.BuildProvidersCompiler.PerformBuild() +71 System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath) +298 System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) +261 System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) +101 System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean noAssert) +126 System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp, Boolean noAssert) +62 System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath) +33 System.Web.UI.PageHandlerFactory.GetHandler(HttpContext context, String requestType, String virtualPath, String path) +37 System.Web.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +307 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
恐らく、「C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\43f530ce\45733bb3\」に一時ファイルが作成される予定なのだろうと思いますが、ファイルも作成されることはありませんでした。
そのため、権限問題かなと思い、考えられるアカウント(Network ServiceやCreator Ownerなど)へ権限を割り振りますが、改善されず、調べたところ、C:\Windows\Temp に割り当てるとよい、という書き込みがあるサイトもあり、Tempに権限を足してみたりもしましたが解決されません。心当たりがなく、大変焦っております。
なおこの問題は本当に急ぎで解決する必要があり、他社フォーラムへマルチポストする恐れがありますが、解決時は必ず報告に上がります。どうかご対応よろしくお願いいたします。
--- 追記1 ---
テストプロジェクトを作成し、次のようなエラーになりました。
プログラムを実行できません。実行しようとしたコマンドは "C:\Windows\Microsoft.NET\Framework\v2.0.50727\vbc.exe" /noconfig @"C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\test\da723fed\59cc3c06\q19hnbrv.cmdline" です。
test は、もともと存在しないフォルダでしたが、test以下は作成されました。
しかし、q19hnbrv.cmdline は作成されませんでした。
testディレクトリをを削除しもう一度実行しましたが、同じ状況でした。--- 追記2 --- (2015.04.24 16:40)
1.再起動を行っても症状が変わりませんでした
2.IISを一度削除し、再インストールを試みましたが変わりませんでした
--- 追記3 --- (2015.04.25)
救済不能と判断し、 OSの再インストールを行うこととなりました。
アドバイスいただいた皆様、ありがとうございました。- 編集済み 野々村 2015年4月25日 1:51 トピック閲覧者が誤って開かないよう文頭に追加
すべての返信
-
ちょっとググってみると同じ問題が報告されてますね。
Access is denied for vbc.exe RSS
http://forums.iis.net/p/1224699/2099310.aspx?Access+is+denied+for+vbc+exeそこにある回答が役に立ったかどうかは書いてないので分かりませんが、一応 IIS_IUSRS グループが以下のフォルダに対する権限を持っているか調べてみてはいかがですか。
C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files
ちなみに、自分の開発環境(Vista SP2 / IIS7)では、IIS_IUSRS グループは Temporary ASP.NET Files フォルダに対し、変更、読み取りと実行、フォルダ内容の一覧表示、読み取り、書き込み、特殊なアクセス許可を持つように設定されてます。
#マルチポストされたのであれば、そのポスト先の URL を書いてください。
【追伸】
IIS_IUSRS が何かについては以下のページを見てください。
IIS 7.0 での組み込みユーザーとグループ アカウントとは
https://technet.microsoft.com/ja-jp/library/dd939094.aspx"ワーカープロセスのトークンに対して実行時に IIS_IUSRS メンバーシップが自動的に追加されるようになりました。"
- 編集済み SurferOnWww 2015年4月22日 3:15 追伸追加
-
では、こちらの記事はどうですか?
Cannot execute a program. The command being executed “dqiitg0c.cmdline”
http://stackoverflow.com/questions/2430536/cannot-execute-a-program-the-command-being-executed-dqiitg0c-cmdline偽装が有効になっている Web アプリに匿名アクセスすると、IIS によって使用される既定の匿名アカウント(ISUR)がアクセスに行くことが原因の問題ということで、質問者さんのケースには該当しないかもしれませんが。
ご自分でもググって調べてください。日本語のサイトはダメでも英語のサイトまで検索範囲を広げると多々ヒットするはずです。例えば、以下の気ワードで試してみてください。
system.runtime.interopservices.externalexception cannot execute a program
あと、最後の手段かもしれませんが、Temporary ASP.NET Files の中のファイルを削除すると直ったという話もよく聞きますので、それが可能であればお試しください。(もちろんバックアップは取った上で)- 編集済み SurferOnWww 2015年4月22日 3:55 あと、・・・以下を追記
-
-
今更ですみません。
私も先月、Windows Update後にクライアントでActiveXが動かなくなりました。イントラシステムでしたので、緊急避難的にWindows Updateをアンインストールしてもらい、再度当たらないようにWindows Updateの対象外に設定することもしてもらいました。その後、そのActiveXを使わないようにプログラムを修正しました。
そういうわけで、どのWindows Updateが問題を引き起こしたのか探り、とりあえずそれをアンインストールしても問題なければそのようにすれば時間が稼げ、Microsoft社による何らかの対応を待つという方法も取れたかもしれません。
もし、Windows Updateが原因であれば、OSの再インストールでも症状が再発する可能性が低くないように思います。
★良い回答には回答済みマークを付けよう! MVP - .NET http://d.hatena.ne.jp/trapemiya/
- 編集済み trapemiya 2015年4月25日 5:43 一部修正
-
4月15日公開のWindows Update をインストールしたら、
cmd.exe や explorer.exe で、アプリケーションエラー(0xc0000018)が
出るようになりました。OSは、Windows 7 ですが、ご質問のトライブル解決の
ヒントになるのではないかと思い、投稿致します。
更新の名前
Microsoft Windows ( KB3045999) のセキュリティ更新プログラム
この更新をアンインストールしたら、cmd.exe や、explorer.exe で
アプリケーションエラーは出なくなりました。
KB3045999 がインストールされて、cmd.exe や explorer.exe で
エラーが発生しているとき、32ビット版のsyswow64\cmd.exe は、正常に実行
できました。
動作不良発生直前のWindows Update でインストールされた更新を
アンインストールすると回復するのではないかと思います。