У меня есть приложение, которое работает 24/7 без участия.Он развертывается через ClickOnce и должен самостоятельно проверять и загружать обновления.Проверяет наличие обновлений при запуске приложения и в назначенное время ночью.Когда он делает это при запуске, он работает отлично.
Однако, когда он делает это в запланированное время, он падает.В обоих случаях используется один и тот же кусок кода.Он работает под Windows 7 и может иметь отношение к UAC .Я думаю, что, возможно, он не может получить доступ к файловой системе, когда компьютер находится в режиме ожидания?Мне действительно нужно это исправить.Вот подробности исключения:
Сообщение:
Привилегия, необходимая для правильной работы службы, не существует в конфигурации учетной записи службы.Вы можете использовать оснастку «Служба Microsoft Management Console (MMC)» (services.msc) и оснастку «Локальные параметры безопасности» (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 #)?