2012-03-07 10 views
4

私は24時間365日出席していないアプリケーションを持っています。それはClickOnce経由で導入されており、アップデートを確認してダウンロードする必要があります。アプリケーションの起動時および夜間に予定された時刻に更新をチェックします。それは起動時にそれを行うとき、それは完全に正常に動作します。ClickOnceのデプロイCheckForDetailedUpdateは例外をスローする

ただし、予定時刻にするとクラッシュします。どちらの場合も、まったく同じコードを使用しています。 Windows   7で動作しており、UACと関係があります。私は、コンピュータがアイドル状態になっているときにファイルシステムにアクセスできないと思っていますか?私は本当にそれを修正する必要があります。ここでは例外の詳細は、次のとおりです。

メッセージ:サービスは、サービスアカウントの構成に存在しません 正常に機能するために必要な

特権。サービス Microsoft管理コンソール(MMC)スナップイン(services.msc)と ローカルセキュリティ設定MMCスナップイン(secpol.msc)を使用して、サービス の構成とアカウント構成を表示できます。 (HRESULTからの例外: 0x80070511)

スタックトレース:

at System.Deployment.Internal.Isolation.IStore.GetAssemblyInformation(UInt32 Flags, IDefinitionIdentity DefinitionIdentity, Guid& riid) 
at System.Deployment.Internal.Isolation.Store.GetAssemblyManifest(UInt32 Flags, IDefinitionIdentity DefinitionIdentity) 
    at System.Deployment.Application.ComponentStore.GetAssemblyManifest(DefinitionIdentity asmId) 
    at System.Deployment.Application.ComponentStore.GetSubscriptionStateInternal(DefinitionIdentity subId) 
    at System.Deployment.Application.SubscriptionStore.GetSubscriptionStateInternal(SubscriptionState subState) 
    at System.Deployment.Application.DeploymentManager.BindCoreWithAppId(Boolean blocking, FileStream& refTransaction, String& productName) 
    at System.Deployment.Application.DeploymentManager.BindCore(Boolean blocking, TempFile& tempDeploy, TempDirectory& tempAppDir, FileStream& refTransaction, String& productName) 
    at System.Deployment.Application.DeploymentManager.Bind() 
    at System.Deployment.Application.ApplicationDeployment.CheckForDetailedUpdate(Boolean persistUpdateCheckResult) 
    at AdvancedKiosks.Utils.Updating.Updater.get_UpdateAvailabilityStatus() 
    at AdvancedKiosks.Utils.Updating.Updater.get_CanUpdate() 
    at AdvancedKiosks.DKMS.ViewModel.MainViewModel.<.ctor>b__6() 
    at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
    at System.Threading.ThreadHelper.ThreadStart() 

編集:私は、原因はハード・ディスク・ドライブがアイドル状態のシステムのいくつかの時間後にオフにされていることかもしれないと思います。アップデートをチェックする前に(C#を使用して)プログラムでハードディスクドライブをオンにする方法はありますか?

+0

スケジュールされたタスクのプロパティダイアログを開きます。 'タスクを実行するときは、次のユーザーアカウントを使用します:'という名前の設定があります。あなたのユーザーアカウントは選択されていますか?もしそうでなければ、これが問題の原因かもしれません。あなたのアカウントに変更し、私はそれが問題を解決すると信じています。 – RLH

+0

私は、アップデートと自己再起動を検出するGUIアプリケーションで同じ問題を抱えています。何度もこのエラーで再起動するとクラッシュします。対話的に実行されているので、システムに対する管理者特権を持つ現在のユーザーのアカウントを使用している必要があります。 – Newtopian

+0

使用していたVisual Studioのバージョンは何ですか? –

答えて

4

私はこのリンクを記録のためだけにここに入れます:link to MSDN forum。それによると、ClickOnce内部のバグで、CheckForDetailedUpdate()関数の呼び出しが一定回数行われた後にこのエラーが発生します。