ClickOnceアプリケーションの起動時に、ライセンス認証のエラーが出る

今まで使用できていた問題なく利用できたClickOnceアプリケーションがありました。

しかし、突然、起動時にライセンス認証のエラーが出るようになりましたので、忘れないようにメモを残します。

 

環境

  • Windows7 sp1
  • .NET Framework 4.5
  • ClickOnceアプリは共有フォルダにて配布
    • 共有フォルダのアクセス権は、Everyoneでフルコントロール

 

症状

共有フォルダ上に置いたClickOnceアプリのsetup.exeファイルを実行しても、エラーが出てインストールができませんでした。

エラーの詳細なログは以下の通りです(一部改変)。

プラットフォームのバージョン情報
    Windows             : 6.1.7601.65536 (Win32NT)
    Common Language Runtime     : 4.0.30319.18063
    System.Deployment.dll       : 4.0.30319.34244 built by: FX452RTMGDR
    clr.dll             : 4.0.30319.18063 built by: FX45RTMGDR
    dfdll.dll           : 4.0.30319.34244 built by: FX452RTMGDR
    dfshim.dll          : 4.0.31106.0 (Main.031106-0000)

ソース
    配置の URL           : file:///%USERPROFILE%/AppData/Roaming/Microsoft/Windows/Start%20Menu/Programs/***...

エラーの概要
    以下はエラーの概要です。これらのエラーの詳細はログに一覧表示されています。
    * %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\***.appref-ms| のライセンス認証により例外が発生しました。 次の失敗メッセージが検出されました:
        + パス '%USERPROFILE%\AppData\Local\Temp\Deployment\WE8AH9KP.H8M' へのアクセスが拒否されました。

コンポーネント ストア トランザクションの失敗の概要
    トランザクション エラーは検出されませんでした。

警告
    この操作中に警告は発生しませんでした。

操作の進行状況
    * [2014/11/** *:*:**] : %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\***.appref-ms| のライセンス認証が開始されました。
    * [2014/11/** *:*:*] : 配置で指定されたように必要な更新チェックを実行しています。

エラーの詳細
    この操作中に次のエラーが検出されました。
    * [2014/11/** *:*:*] System.UnauthorizedAccessException
        - パス '%USERPROFILE%\AppData\Local\Temp\Deployment\WE8AH9KP.H8M' へのアクセスが拒否されました。
        - ソース: mscorlib
        - スタック トレース:
            場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
            場所 System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj, Boolean checkHost)
            場所 System.IO.Directory.InternalCreateDirectoryHelper(String path, Boolean checkHost)
            場所 System.Deployment.Application.DownloadManager.DownloadDeploymentManifestDirect(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, IDownloadNotification notification, DownloadOptions options, ServerInformation& serverInformation)
            場所 System.Deployment.Application.DownloadManager.DownloadDeploymentManifest(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, IDownloadNotification notification, DownloadOptions options)
            場所 System.Deployment.Application.ApplicationActivator.PerformDeploymentUpdate(SubscriptionState& subState, String& errorPageUrl)
            場所 System.Deployment.Application.ApplicationActivator.ProcessOrFollowShortcut(String shortcutFile, String& errorPageUrl, TempFile& deployFile)
            場所 System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
            場所 System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)

コンポーネント ストア トランザクションの詳細
    トランザクション情報はありません。

 

対応

似たような事例がないかを調べてみると、以下の掲示板がありました。
ActiveDirectory環境下でPowerUsersにてClickOnceアプリケーションをインストールするには?

エラーの詳細が異なりますが、原因はアクセス権に関するもののようでした。

 
次に、 %USERPROFILE%\AppData\Local\Temp\Deploymentフォルダのアクセス権を調べてみたところ、なぜかアクセス権が消えていました。

 
そのため、上記のフォルダのアクセス権にログオンしているユーザーを追加してみたところ、エラーが出なくなりインストールすることができました。

 
ちなみに、発生した根本的な原因は分かりませんでした...