I want to stop the service run automatically when system boots.
For specific information, I’m logged in with «administrator» account.
And opened cmd with «run as administrator»
here’s the log on cmd.
C:>sc config AppIDSvc start= auto
[SC] ChangeServiceConfig SUCCESS
C:>sc config AppIDSvc start= demand
[SC] ChangeServiceConfig FAILED 5:
Access is denied.
I don’t understand why I can change startup type to auto but cannot to demand.
Any ideas?
assylias
320k80 gold badges658 silver badges780 bronze badges
asked Jan 25, 2018 at 0:30
You can just hack the registry: (1=Sys,2=Auto,3=Manual,4=Disabled)
HKEY_LOCAL_MACHINESYSTEMControlSet001ServicesWSServiceStart = 4
answered Nov 14, 2020 at 19:17
1
Run cmd.exe
as administrator by right clicking on CMD and selecting Run as Administrator
or if Windows 8 or 10, right click Start and select Command Prompt (Admin)
then in cmd.exe
and type:
net user administrator /active:yes
in the same cmd.exe
retry:
sc config AppIDSvc start= demand
Which should return:
[SC] ChangeServiceConfig SUCCESS
If however it still gives the access denied
error, please Restart the Computer and then run cmd.exe as Administrator and then retry:
sc config AppIDSvc start= demand
answered Jan 25, 2018 at 8:00
GerhardGerhard
22.5k7 gold badges27 silver badges42 bronze badges
При выполнении команд net user, net stop, net start и других в командной строке Windows 11 или Windows 10 вы можете получить сообщение: «Системная ошибка 5. Отказано в доступе». Начинающему пользователю не всегда ясно, чем вызвана ошибка и как решить проблему.
В этой инструкции подробно о том, почему возникает системная ошибка 5 при запуске и остановке служб или работе с учетными записями пользователе в командной строке.
Методы решения для «Системная ошибка 5. Отказано в доступе» при выполнении команд net stop, net start, net user
Причина того, что в результате выполнения команд сообщается о системной ошибке 5 «Отказано в доступе» в том, что командная строка (Терминал Windows или Windows PowerShell) запущен не от имени администратора. Или, в некоторых случаях — в том, что ваш пользователь и вовсе не имеет прав администратора на компьютере.
В первом случае решение будет простым: запустите командную строку от имени Администратора, для этого вы можете:
- Начать набирать «Командная строка» в поиске на панели задач Windows 11 или Windows 10, а затем в результатах поиска нажать «Запуск от имени Администратора».
- Нажать правой кнопкой мыши по кнопке «Пуск» и выбрать «Терминал Windows (Администратор)» или «Windows PowerShell (Администратор)»
- Использовать инструкции Как запустить командную строку от имени Администратора в Windows 11 и Как запустить командную строку от имени Администратора в Windows 10.
Ошибка не будет появляться после того, как вы запустите командную строку с соответствующими правами.
Если ваш пользователь не имеет прав администратора на компьютере, но вы имеете доступ к учетной записи с правами администратора, вы можете зайти под ней, а потом сделать текущего пользователя администратором: Как сделать пользователя администратором в Windows 10 (в Windows 11 действия аналогичны).
В сценарии, когда компьютер контролируется не вами, права администратора вам предоставить не готовы, команды вы выполнить не сможете (разве что обходными путями, такими как сброс пароля для учетной записи администратора).
Skip to content
- ТВикинариум
- Форум
- Поддержка
- PRO
- Войти
Отказано в доступе при изменении типа запуска службы
Цитата: Владимир от 18.05.2021, 16:02Добрый день. При изменении параметра «Start» по пути «HKLMSYSTEMCurrentControlSetServicesWdiSystemHost» появляется ошибка «Отказано в доступе», программа запущена от администратора. Как можно задать тип запуска этой службе?
Добрый день. При изменении параметра «Start» по пути «HKLMSYSTEMCurrentControlSetServicesWdiSystemHost» появляется ошибка «Отказано в доступе», программа запущена от администратора. Как можно задать тип запуска этой службе?
Цитата: Владимир от 18.05.2021, 23:17Нашел решение:
Кодpublic static class ServiceHelper { [DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)] public static extern Boolean ChangeServiceConfig( IntPtr hService, UInt32 nServiceType, UInt32 nStartType, UInt32 nErrorControl, String lpBinaryPathName, String lpLoadOrderGroup, IntPtr lpdwTagId, [In] char[] lpDependencies, String lpServiceStartName, String lpPassword, String lpDisplayName); [DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Auto)] static extern IntPtr OpenService( IntPtr hSCManager, string lpServiceName, uint dwDesiredAccess); [DllImport("advapi32.dll", EntryPoint = "OpenSCManagerW", ExactSpelling = true, CharSet = CharSet.Unicode, SetLastError = true)] public static extern IntPtr OpenSCManager( string machineName, string databaseName, uint dwAccess); [DllImport("advapi32.dll", EntryPoint = "CloseServiceHandle")] public static extern int CloseServiceHandle(IntPtr hSCObject); private const uint SERVICE_NO_CHANGE = 0xFFFFFFFF; private const uint SERVICE_QUERY_CONFIG = 0x00000001; private const uint SERVICE_CHANGE_CONFIG = 0x00000002; private const uint SC_MANAGER_ALL_ACCESS = 0x000F003F; public static void ChangeStartMode(ServiceController svc, ServiceStartMode mode) { var scManagerHandle = OpenSCManager(null, null, SC_MANAGER_ALL_ACCESS); if (scManagerHandle == IntPtr.Zero) { throw new ExternalException("Open Service Manager Error"); } var serviceHandle = OpenService( scManagerHandle, svc.ServiceName, SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG); if (serviceHandle == IntPtr.Zero) { throw new ExternalException("Open Service Error"); } var result = ChangeServiceConfig( serviceHandle, SERVICE_NO_CHANGE, (uint)mode, SERVICE_NO_CHANGE, null, null, IntPtr.Zero, null, null, null, null); if (result == false) { int nError = Marshal.GetLastWin32Error(); var win32Exception = new Win32Exception(nError); throw new ExternalException("Could not change service start type: " + win32Exception.Message); } CloseServiceHandle(serviceHandle); CloseServiceHandle(scManagerHandle); } }
Использование:var svc = new ServiceController(WdiSystemHost); ServiceHelper.ChangeStartMode(svc, ServiceStartMode.Disabled);
Нашел решение:
public static class ServiceHelper { [DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)] public static extern Boolean ChangeServiceConfig( IntPtr hService, UInt32 nServiceType, UInt32 nStartType, UInt32 nErrorControl, String lpBinaryPathName, String lpLoadOrderGroup, IntPtr lpdwTagId, [In] char[] lpDependencies, String lpServiceStartName, String lpPassword, String lpDisplayName); [DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Auto)] static extern IntPtr OpenService( IntPtr hSCManager, string lpServiceName, uint dwDesiredAccess); [DllImport("advapi32.dll", EntryPoint = "OpenSCManagerW", ExactSpelling = true, CharSet = CharSet.Unicode, SetLastError = true)] public static extern IntPtr OpenSCManager( string machineName, string databaseName, uint dwAccess); [DllImport("advapi32.dll", EntryPoint = "CloseServiceHandle")] public static extern int CloseServiceHandle(IntPtr hSCObject); private const uint SERVICE_NO_CHANGE = 0xFFFFFFFF; private const uint SERVICE_QUERY_CONFIG = 0x00000001; private const uint SERVICE_CHANGE_CONFIG = 0x00000002; private const uint SC_MANAGER_ALL_ACCESS = 0x000F003F; public static void ChangeStartMode(ServiceController svc, ServiceStartMode mode) { var scManagerHandle = OpenSCManager(null, null, SC_MANAGER_ALL_ACCESS); if (scManagerHandle == IntPtr.Zero) { throw new ExternalException("Open Service Manager Error"); } var serviceHandle = OpenService( scManagerHandle, svc.ServiceName, SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG); if (serviceHandle == IntPtr.Zero) { throw new ExternalException("Open Service Error"); } var result = ChangeServiceConfig( serviceHandle, SERVICE_NO_CHANGE, (uint)mode, SERVICE_NO_CHANGE, null, null, IntPtr.Zero, null, null, null, null); if (result == false) { int nError = Marshal.GetLastWin32Error(); var win32Exception = new Win32Exception(nError); throw new ExternalException("Could not change service start type: " + win32Exception.Message); } CloseServiceHandle(serviceHandle); CloseServiceHandle(scManagerHandle); } }
Использование:
var svc = new ServiceController(WdiSystemHost); ServiceHelper.ChangeStartMode(svc, ServiceStartMode.Disabled);
Цитата: Станислав от 21.05.2021, 09:34Доброго времени суток! Не хочу создавать лишний топик, поэтому напишу тут.
Христ в ТГ говорит про его курсы С#, где можно их найти?
Заранее спасибо!
Доброго времени суток! Не хочу создавать лишний топик, поэтому напишу тут.
Христ в ТГ говорит про его курсы С#, где можно их найти?
Заранее спасибо!
Цитата: Станислав от 21.05.2021, 09:34Доброго времени суток! Не хочу создавать лишний топик, поэтому напишу тут.
Христ в ТГ говорит про его курсы С#, где можно их найти?
Заранее спасибо!
Доброго времени суток! Не хочу создавать лишний топик, поэтому напишу тут.
Христ в ТГ говорит про его курсы С#, где можно их найти?
Заранее спасибо!
Цитата: ЯR от 21.05.2021, 09:37Здравствуйте.
Внизу страницы есть ссылки на Youtube-канал.
Здравствуйте.
Внизу страницы есть ссылки на Youtube-канал.
В этой статье мы поговорим о каталоге WinSxS в Windows, причинах его постоянного роста и способах очистки. Каталог C:windowsWinSxS является хранилищем компонентов Windows. В этом каталоге хранятся dll библиотеки, бинарные и xml файлы, необходимые для установки и работы различных ролей и компонентов Windows. Каждый раз когда вы устанавливаете обновления Windows (это происходит ежемесячно), новая версия обновляемого компонента устанавливается в систему, а старая сохраняется в хранилище компонентов WinSxS (это необходимо для обеспечения совместимости и возможности “отката“ к старым версиям компонентов при удалении проблемного обновления).
Со временем размер каталога WinSxS постоянно увеличивается. Причем его размер ничем не ограничен (хотя на практике размер папки WinSxS в Windows 10 редко превышает 15-20 Гб.)
В этой статье мы рассмотрим наиболее безвредные способы очистки папки WinSxS в Windows 10 и Windows Server.
- Оптимизация хранилища компонентов и удаление старых версий компонентов, оставшихся после установки обновлений Windows;
- Технология Features on Demand (функции по требованию), позволяющая удалить неиспользуемые компоненты Windows с диска;
- Сжатие файлов в папке WinSxS – способ уменьшить размер каталога WinSxS за счет включения NTFS компрессии.
У многих пользователей возникает естественный вопрос можно ли вручную удалить файлы из папки WinSxS. Ответ на этот вопрос – категоричное НЕТ! Такими действиями с большой долей вероятности вы сломаете свою Windows. И хотя отдельные попытки удаления конкретных файлов из папки WinSxS могут быть удачными, рекомендовать этот способ нельзя.
Содержание:
- Как узнать реальный размер папки WinSxS в Windows 10?
- Очистка хранилища компонентов WinSxS в Windows
- Удаление неиспользуемых компонентов Windows (Windows Server)
- Включаем NTFS сжатие на папке WinSxS в Windows
Как узнать реальный размер папки WinSxS в Windows 10?
Самый простой способ получить текущий размер каталога WinSxS в Windows, запустить проводник File Explorer и открыть свойства папки %windir%WinSxS (или воспользоваться скриптом PowerShell). Но имейте в виду, что большинство файловых менеджеров (в том числе File Explorer) показывают несколько больший размер каталога WinSxS, чем он занимает на диске.
Дело в том, что в каталоге WinSxS есть большое количество hard links (жестких символических ссылок) на файлы в других системных каталогах. Файловые менеджеры при подсчете размера папки WinSxS учитывают объем файлов, на которые ссылаются жесткие ссылки, а это не корректно.
Чтобы реальный (без учета жестких ссылок) размер папки WinSxS, воспользуйтесь утилитой SysInternal du:
du -v c:windowswinSXS
Но проще всего проанализировать размер хранилища компонентов в папке WinSxS с помощью команды DISM:
Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore
Разберемся, что возвращает данная команда:
Размер хранилища компонентов по данным проводника : 5.70 GB (это размер хранилища с учета жестких ссылок, который отображается в проводнике)
Фактический размер хранилища компонентов : 5.49 GB (реальный размер хранилища компонентов за исключением жестких ссылок)
Совместно с Windows : 3.12 GB (обязательные файлы системы, не могут быть удалены)
Резервные копии и отключенные компоненты : 2.12 GB (устаревшие файлы компонентов, которые нужны на случай проблем с установленными обновлениями)
Кэш и временные данные : 245.87 MB (файлы используются для ускорения работы системы обслуживания)
Дата последней очистки : 2018-07-31 12:45:23
Число освобождаемых пакетов : 10 (файлы, которые обновились после установки обновлений Windows, они будут удалены при очистке хранилища)
Рекомендуется очистка хранилища компонентов : Да
Как вы видите, в данном случае можно уменьшить размер каталога WinSxS на 2.1 Гб + 250 Мб.
Очистка хранилища компонентов WinSxS в Windows
Самый быстрый и простой способ освободить место в хранилище компонентов Windows (т.е. очистить папку WinSxS) – оптимизация хранилища командой:
Dism.exe /Online /Cleanup-Image /StartComponentCleanup
Опция Dism /StartComponentCleanup поддерживается во всех версиях Windows, начиная с Windows 8/Windows Server.
После окончания очистки проверьте текущий размер хранилища компонентов:
Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore
В моем примере это помогло уменьшить размер папки WinSxS на 2,5 Гб.
С помощью еще одного параметра /ResetBase вы можете удалить все предыдущие версии компонентов, оставшиеся после установки обновлений Windows. После этого вы не сможете удалить установленные обновления или Service Pack, а в панели обновлений
appwiz.cpl
у обновлений пропадет кнопка «Удалить»).
Чтобы очистить старые версии компонентов, выполните:
Dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase
В Windows 7 и Windows Server 2008 R2 для очистки старых версий компонентов, оставшихся после установки сервис пака, использовался еще один параметр DISM:
dism /online /Cleanup-Image /spsuperseded
Также вы можете удалить устаревшие обновления с помощью мастера очистки диска. Выполните команду cleanmgr c правами администратора.
В окне утилиты выберите диск и в следующем окне нажмите кнопку «Очистить системны файлы».
Далее выберите опцию “Файлы журнала обновления Windows» и нажмите ОK. Утилита очистки диска покажет сколько места вы можете освободить, удалив файлы журнала старых обновлений Windows. В моем примере это 427 Мб.
После окончания очистки хранилища с помощью DISM проверьте сколько освободилось места на диске.
В планировщике задания Windows 10 и Windows Server 2016 есть специальное задание автоматического обслуживания, которое регулярно выполняет оптимизацию и очистку каталога WinSxS (выполняется действия, аналогичные команде dism с ключом StartComponentCleanup). Это задание StartComponentCleanup находится в разделе MicrosoftWindowsServicing. Данное задание запускается в фоновом режиме и автоматически удаляет версии компонентов старше 30 дней, которое были заменены более новыми версиями.
Можно запустить это задание вручную так:
schtasks.exe /Run /TN "MicrosoftWindowsServicingStartComponentCleanup"
Удаление неиспользуемых компонентов Windows (Windows Server)
В статье Безопасная очистка папки WinSxS в Windows Server 2016/2012 мы рассмотрели функцию Features on Demand (функции по требованию), предоставляющую возможность удаления с диска бинарных файлов неиспользуемых ролей и компонентов из каталога WinSxS. Для этого в Windows Server используется командлет PoweShell Uninstall-WindowsFeature.
В Windows 10 командлет Uninstall-WindowsFeature отсуствует, и для удаления компонентов Windows из образа нужно использовать DISM.
DISM в отличии от Uninstall-WindowsFeature не удаляет зависимые компоненты.
Полный список доступных функций в образе Windows 10 можно получить с помощью команды:
DISM.exe /Online /English /Get-Features /Format:Table
Чтобы удалить, например компонент TelnetClient с диска (из каталога WinSxS), выполните команду:
DISM.exe /Online /Disable-Feature /Featurename:TelnetClient /Remove
Если еще раз вывести список всех доступных функций по требованию в Windows, вы увидите, что статус компонента изменится на Disabled with Payload Removed.
Таким образом в Windows можно существенно уменьшить размер папки WinSxS, удалив с диска неиспользуемые компоненты. Единственный нюанс, это вариант очистки каталога WinSxS подойдет для достаточной продвинутых пользователей, которые разбираются в компонентах Windows 10 и их назначении.
Включаем NTFS сжатие на папке WinSxS в Windows
Еще один способ уменьшить размера каталога WinSxS в Windows 10 – сжать содержимое каталога на уровне файловой системы NTFS.
- Откройте командную строку с правами администратора;
- Остановите и отключите службы Windows Installer и Windows Module Installer:
sc stop msiserver sc stop TrustedInstaller sc config msiserver start= disabled sc config TrustedInstaller start= disabled
- Создайте резервную копию списков доступа (ACL) назначенных на файлы и папки в каталоге WinSxS с помощью утилиты icacls. Резервная копия ACL представляет собой обычной текстовый файл, в котором указаны все файлы и каталоги и назначенные на них NTFS разрешения (в дальнейшем этот файл понадобиться для восстановления оригинальных ACL):
icacls "%WINDIR%WinSxS" /save "%WINDIR%WinSxS_NTFS.acl" /t
- Назначьте себя владельцем папки WinSxS и всех вложенных каталогов:
takeown /f "%WINDIR%WinSxS" /r
- Предоставьте своей учетной записи полные права на каталог WinSxS:
icacls "%WINDIR%WinSxS" /grant "%USERDOMAIN%%USERNAME%":(F) /t
- Теперь можно выполнить сжатие файлов в каталоге WinSxS с помощью команды compact. Т.к. часть файлов может использоваться Windows, нужно указать параметр /i. Иначе сжатие будет остановлено на первом же занятом файле (в Windows 10 можно использовать более прогрессивное LZX сжатие):
compact /s:"%WINDIR%WinSxS" /c /a /i *
- Теперь нужно восстановить TrustedInstaller как владельца каталога WinSxS:
icacls "%WINDIR%WinSxS" /setowner "NT SERVICETrustedInstaller" /t
- И вернуть оригинальные NTFS разрешения на каталог WinSxS из резервной копии ACL:
icacls "%WINDIR%" /restore "%WINDIR%WinSxS_NTFS.acl"
- Измените типа тип запуска служб Windows Installer и Windows Module Installer:
sc config msiserver start= demand sc config TrustedInstaller start= demand
Проверьте текущий размер каталога WinSxS.
Как вы видите, в нашем примере размер папки WinSxS за счет сжатия уменьшился с 9,36 Гб до 6,5 Гб (примерно на треть). Неплохо, особо для небольшого по размеру SSD-диска.
Указанные команды можно выполнять по отдельности (так проще контролировать успешность выполнения каждой из них), либо можно объединить все операции в один файл скрипт. Вы можете скачать готовый bat файл для сжатия WinSxS здесь compress_winsxs.bat
Данный скрипт нужно запускать периодически, т.к. в каталоге WinSxS будут появляться новые «несжатые» файлы после установки новых обновлений Windows и программ.
На что может повлиять сжатие каталога WinSxS? Windows работает со сжатыми файлами в прозрачном режиме, однако при обработке таких файлов, ей может понадобиться дополнительное время на их декомпрессию/компрессию. Это может вызвать небольшое замедление при установке компонентов Windows или обновлений. Однако для современных процессоров (CPU) операция компрессии/декомпрессии файлов выполняется практически мгновенно, так что реального уменьшения скорости пользователь даже не заметит.
I’m getting this error when I try to start a windows service I’ve created in C#:
My Code so far:
private ServiceHost host = null;
public RightAccessHost()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
host = new ServiceHost(typeof(RightAccessWcf));
host.Open();
}
protected override void OnStop()
{
if (host != null)
host.Close();
host = null;
}
Update #1
I solved the issue above by granting permissions to the account NETWORK SERVICE but now I have an another problem:
Update #2
Service cannot be started. System.InvalidOperationException: Service ‘RightAccessManagementWcf.RightAccessWcf’ has zero application (non-infrastructure) endpoints. This might be because no configuration file was found for your application, or because no service element matching the service name could be found in the configuration file, or because no endpoints were defined in the service element.
at System.ServiceModel.Description.DispatcherBuilder.EnsureThereAreNonMexEndpoints(ServiceDescription description)
at System.ServiceModel.Description.DispatcherBuilder.InitializeServiceHost(ServiceDescription description, ServiceHostBase serviceHost)
at System.ServiceModel.ServiceHostBase.InitializeRuntime()
at System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
at RightAccessHosting.RightAccessHost.OnStart(String[] args) in C:Users….
M463
1,9733 gold badges22 silver badges39 bronze badges
asked Nov 24, 2010 at 13:00
TheBoubouTheBoubou
19.3k53 gold badges147 silver badges234 bronze badges
2
I realize this post is old, but there’s no marked solution and I just wanted to throw in how I resolved this.
The first Error 5: Access Denied
error was resolved by giving permissions to the output directory to the NETWORK SERVICE
account.
The second Started and then stopped
error seems to be a generic message when something faulted the service. Check the Event Viewer (specifically the ‘Windows Logs > Application’) for the real error message.
In my case, it was a bad service configuration setting in app.config.
Mangesh
5,3815 gold badges48 silver badges71 bronze badges
answered Mar 6, 2011 at 0:37
Justin SkilesJustin Skiles
9,3436 gold badges50 silver badges61 bronze badges
6
Computer -> Manage -> Service -> [your service] properties.
Then the the tab with the account information. Play with those settings, like run the service with administrator account or so.
That did it for me.
EDIT:
What also can be the problem is that, most services are run as LOCAL SERVICE
or LOCAL SYSTEM
accounts. Now when you run C:/my-admin-dir/service.exe
with those accounts but they are not allowed to execute anything in that directory, you will get error 5
. So locate the executable of the service, RMB the directory -> Properties -> Security and make sure that the account the service is run with, is in the list of users that are alloewd to have full control over the directory.
answered Aug 1, 2012 at 6:04
Mike de KlerkMike de Klerk
11.8k8 gold badges51 silver badges76 bronze badges
This worked for me.
- Right-click on top-level folder containing the service executable. Go to Properties
- Go to «Security» Tab
- Click «EDIT»
- Click «ADD»
- Enter the name «SYSTEM», click OK
- Highlight SYSTEM user, and click ALLOW check-box next to «Full control»
- Click OK twice
answered Jun 12, 2013 at 1:39
3
Make sure the Path to executable
points to an actual executable (Right click service -> Properties -> General tab).
Via powershell (and sc.exe) you can install a service without pointing it to an actual executable… ahem.
answered Jan 7, 2016 at 13:05
AageAage
5,8822 gold badges32 silver badges56 bronze badges
4
I also got the same error , It resolved by
Right click on Service > Properties >Log On > log on as : Local System Account.
answered Jun 4, 2014 at 8:10
3
I was getting this error because I misread the accepted answer from here: Create Windows service from executable.
sc.exe create <new_service_name> binPath= "<path_to_the_service_executable>"
For <path_to_service_executable>
, I was using the path of the executable’s folder, e.g. C:Folder
.
It needs to be the path of the executable, e.g. C:FolderExecutable.exe
.
answered Sep 10, 2018 at 12:24
2
I got the solution:
1. Go to local service window(where all services found)
2. Just right click on your service name:
3. click on "properties"
4. go to "log on" tab
5. select "local system account"
6. click "ok"
now you can try to start the service.
answered May 30, 2018 at 17:35
Nur UddinNur Uddin
1,7901 gold badge28 silver badges38 bronze badges
1
In my case following was not checked.
answered Apr 21, 2017 at 21:12
2
if you are a having an access denied error code 5. then probably in your code your service is trying to interact with some files in the system like writing to a log file
open the services properties select log on
tab and check option to allow service to interact with the desktop,
answered Oct 27, 2017 at 23:01
kudzai zishumbakudzai zishumba
6342 gold badges7 silver badges12 bronze badges
For me — the folder from which the service was to run, and the files in it, were encrypted using the Windows «Encrypt» option. Removing that and — voila!
answered Nov 28, 2013 at 20:45
1
This error happens when there is a error in your OnStart
method. You cannot open a host directly in OnStart
method because it will not actually open when it is called, but instead it will wait for the control. So you have to use a thread. This is my example.
public partial class Service1 : ServiceBase
{
ServiceHost host;
Thread hostThread;
public Service1()
{
InitializeComponent();
hostThread= new Thread(new ThreadStart(StartHosting));
}
protected override void OnStart(string[] args)
{
hostThread.Start();
}
protected void StartHosting()
{
host = new ServiceHost(typeof(WCFAuth.Service.AuthService));
host.Open();
}
protected override void OnStop()
{
if (host != null)
host.Close();
}
}
Frank Bryce
8,0064 gold badges37 silver badges56 bronze badges
answered Oct 3, 2011 at 9:58
I had windows service hosted using OWIN and TopShelf.
I was not able to start it. Same error — «Access denied 5»
I ended up giving all the perms to my bin/Debug.
The issue was still not resolved.
So I had a look in the event logs and it turned out that the Microsoft.Owin.Host.HttpListener
was not included in the class library containing the OWIN start up class.
So, please make sure you check the event log to identify the root cause before beginning to get into perms, etc.
answered May 27, 2016 at 4:00
Rashmi PanditRashmi Pandit
23.1k17 gold badges71 silver badges111 bronze badges
2
In my case, I had to add ‘Authenticated Users’ in the list of ‘Group or User Names’ in the folder where the executable was installed.
answered Mar 8, 2018 at 7:27
One of the causes for this error is insufficient permissions (Authenticated Users) in your local folder.
To give permission for ‘Authenticated Users’
Open the security tab in properties of your folder, Edit and Add ‘Authenticated Users’ group and Apply changes.
Once this was done I was able to run services even through network service account (before this I was only able to run with Local system account).
answered Nov 2, 2018 at 13:30
Right click on the service
in service.msc and select property
.
You will see a folder path under Path to executable
like C:UsersMeDesktopprojectTorTortor.exe
Navigate to C:UsersMeDesktopprojectTor and right click on Tor.
Select property
, security
, edit
and then add
.
In the text field enter LOCAL SERVICE
, click ok and then check the box FULL CONTROL
Click on add
again then enter NETWORK SERVICE
, click ok
, check the box FULL CONTROL
Then click ok (at the bottom)
answered Nov 14, 2017 at 16:49
MagTunMagTun
5,5715 gold badges61 silver badges102 bronze badges
Your code may be running in the security context of a user that is not allowed to start a service.
Since you are using WCF, I am guessing that you are in the context of NETWORK SERVICE.
see: http://support.microsoft.com/kb/256299
answered Nov 24, 2010 at 13:04
Shiraz BhaijiShiraz Bhaiji
63.7k33 gold badges143 silver badges249 bronze badges
2
I have monitored sppsvc.exe using process monitor and found out that it was trying to write to the HKEY_LOCAL_MACHINESYSTEMWPA key. After giving permissions to NETWORK SERVICE on this key, I was able to start the service and Windows suddenly recognized that it was activated again.
answered Apr 29, 2014 at 21:00
Use LocalSystem Account instead of LocalService Account in Service Installer.
You can do this either from doing below change in design view of your service installer:
Properties of Service Process Installer -> Set Account to LocalSystem.
or by doing below change in in designer.cs file of your service installer:
this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;
answered Nov 9, 2016 at 11:03
Jay ShahJay Shah
3,5191 gold badge26 silver badges25 bronze badges
Have a look at Process Utilities > Process monitor
from http://www.sysinternals.com.
This is tool that allows you monitor what a process does. If you monitor this service process, you should see an access denied somewhere, and on what resource the access denied is given.
answered Nov 24, 2010 at 13:13
Pieter van GinkelPieter van Ginkel
29.1k8 gold badges71 silver badges109 bronze badges
For the error 5, i did the opposite to the solution above.
«The first Error 5: Access Denied error was resolved by giving permissions to the output directory to the NETWORK SERVICE account.»
I changed mine to local account, instead of network service account, and because i was logged in as administrator it worked
answered Dec 19, 2012 at 13:09
If you are getting this error on a server machine try give access to the folder you got the real windows service exe. You should go to the security tab and select the Local Service as user and should give full access. You should do the same for the exe too.
answered Mar 26, 2014 at 2:43
DarshanaDarshana
5641 gold badge4 silver badges12 bronze badges
I accidentally set my service to run as Local service
solution was to switch to Local System
answered Sep 23, 2014 at 21:45
medameda
45k14 gold badges92 silver badges122 bronze badges
After banging my had against my desk for a few hours trying to figure this out, somehow my «Main» method got emptied of it’s code!
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new DMTestService()
};
ServiceBase.Run(ServicesToRun);
Other solutions I found:
- Updating the .NET framework to 4.0
-
Making sure the service name inside the InitializeComponent() matches the installer service name property
private void InitializeComponent() ... this.ServiceName = "DMTestService";
-
And a nice server restart doesn’t hurt
Szhlopp
answered May 5, 2015 at 23:53
In may case system run out of free space on local disk.
answered Jul 8, 2015 at 14:30
I had this issue today on a service that I was developing, and none of the other suggestions on this question worked. In my case, I had a missing .dll dependency in the folder where the service ran from.
When I added the dependencies, the issue went away.
answered Jul 21, 2015 at 16:45
Frank BryceFrank Bryce
8,0064 gold badges37 silver badges56 bronze badges
In my case I kept the project on desktop and to access the desktop we need to add permission to the folder so I simply moved my project folder to C: directory now its working like a charm.
answered Oct 8, 2016 at 5:17
smalismali
4,6576 gold badges38 silver badges59 bronze badges
I don’t know if my answer would make sense to many, but I too faced the same issue and the solution was outrageously simple. All I had to do was to open the program which I used to run the code as an administrator. (right-click —> Run as Administrator).
That was all.
answered Aug 29, 2018 at 12:43
Harshith RaiHarshith Rai
3,0187 gold badges20 silver badges35 bronze badges
check windows event log for detailed error message. I resolved the same after checking event log.
answered Oct 30, 2019 at 10:24
Amrik SinghAmrik Singh
4935 silver badges4 bronze badges
All other answers talk about permissions issues — which make sense, given that’s what the error message refers to.
However, in my case, it was caused by a simple exception in my service code (System.IndexOutOfRangeException
, but it could be anything).
Hence, when this error occurs, one should look inside their log and look for exceptions.
answered Sep 13, 2021 at 10:45
OfirDOfirD
8,9034 gold badges45 silver badges88 bronze badges
I had this issue on a service that I was deploying, and none of the other suggestions on this question worked. In my case, it was because my .config (xml) wasn’t valid. I made a copy and paste error when copying from qualif to prod.
answered Sep 11, 2015 at 9:04
SabineASabineA
731 gold badge1 silver badge5 bronze badges
Сообщение “Ошибка 5: отказано в доступе” обычно появляется при попытке установить какие-либо новые программы или приложения. Хотя с проблемой чаще всего сталкиваются пользователи Windows 10, она не обошла стороной и предыдущие версии операционной системы.
Как понятно из самой ошибки, доступ к действию (обновлению Windows / установке приложения) был запрещён. Это происходит из-за недостаточных разрешений в системе. Поэтому в большинстве случаев неполадка решается запуском проблемной программы от имени администратора. Помимо этого существуют и другие причины сбоя. Ниже разберём, почему так происходит, и как это исправить.
Содержание
- Решение 1. Запустите установщик от имени администратора
- Решение 2. Дайте своей учётной записи права администратора
- Решение 3. Запустите приложение в режиме совместимости
- Решение 4. Запустите средство устранения неполадок совместимости
- Решение 5. Временно измените разрешения профиля пользователя
- Исправления для “ошибка 5: отказано в доступе, Windows не удалось запустить службу [название] на локальном компьютере”.
- Способ 1. Проверьте систему на наличие повреждённых файлов
- Способ 2. Проверьте, есть ли у сервиса доступ к файлам
- Способ 3. Откат системы
- Способ 4. Сброс Windows
Решение 1. Запустите установщик от имени администратора
Как уже упоминалось, первым исправлением должен быть запуск приложения или установщика программы от имени администратора.
- Нажмите правой кнопкой мыши по ярлыку установленной программы, или по установщику, если система не позволяет установить данное приложение.
- Выберите пункт: Запуск от имени администратора.
- Когда появится окно управления учётными записями пользователей, нажмите Да.
- Проверьте, решило ли это проблему.
Решение 2. Дайте своей учётной записи права администратора
Если запуск приложения от имени администратора не помог, попробуйте дать своему профилю права администратора.
- Нажмите ПКМ по значку Windows и выберите пункт Выполнить.
- Скопируйте и вставьте команду netplwiz, а затем нажмите Ок.
- В открывшемся окне пользователей выберите свою учётную запись и нажмите Свойства.
- В новом окне выберите вкладку Членство в группах и установите флажок на пункт Администратор.
- Нажмите: Применить и Ок.
- Снова попробуйте установить / запустить приложение.
Решение 3. Запустите приложение в режиме совместимости
Одной из причин ошибки может быть проблема в совместимости программы с какими-либо системными файлами именно Windows 10, поэтому стоит попробовать запустить приложение в режиме совместимости с предыдущими версиями системы.
- Нажмите ПКМ по ярлыку проблемной программы, и выберите Свойства.
- В новом окне перейдите на вкладку Совместимость.
- В разделе Режим совместимости установите галочку, чтобы активировать возможность выбора альтернативной версии Windows.
- Выберите одну из доступных версий, а затем нажмите Применить и Ок.
- Пробуйте разные версии, если предыдущая попытка не дала результатов.
Решение 4. Запустите средство устранения неполадок совместимости
В Windows встроены инструменты устранения неполадок – их можно запустить через Панель управления или панель настроек Windows. После чего система в автоматическом режиме проведёт диагностику, и исправит неполадки, если это возможно. В противном случае будут предложены рекомендации по самостоятельному решению проблемы.
- Снова нажмите ПКМ по ярлыку проблемного приложения.
- Выберите пункт: Исправление проблем совместимости.
- Ожидайте окончания диагностики.
Решение 5. Временно измените разрешения профиля пользователя
Руководство:
- Нажмите Win + E, чтобы открыть проводник.
- Откройте диск, на котором установлена система (по умолчанию диск С:).
- Нажмите ПКМ по папке Пользователи и выберите Свойства.
- В новом окне выберите свой профиль и нажмите Дополнительно.
- В следующем окне конфигураций установите галочку “Замените все записи разрешений дочернего объекта наследуемого от этого объекта”.
- Нажмите: Применить и Ок.
- Попробуйте снова установить / запустить программу.
Исправления для “ошибка 5: отказано в доступе, Windows не удалось запустить службу [название] на локальном компьютере”.
В некоторых случаях ошибка может быть связана с конкретной службой. Рассмотрим варианты решения в данной ситуации:
Способ 1. Проверьте систему на наличие повреждённых файлов
Поврежденные системные файлы могут привести к тому, что службы не будут работать должным образом. Поэтому можно попробовать исправить их, выполнив ввод команд в командной строке:
- Нажмите ПКМ по значку Windows и выберите Командная строка (Администратор).
- Введите следующую команду и нажмите Enter:
- sfc /scannow
- По окончании сканирования система сообщит о найденных ошибках и их исправлениях.
- Необходимо перезагрузить компьютер.
- Если проблема осталась, введите поочерёдно следующий набор команд, нажимая Enter после каждой:
- DISM /Online /Cleanup-Image /CheckHealth
DISM /Online /Cleanup-Image /ScanHealth
DISM /Online /Cleanup-Image /RestoreHealth - Перезагрузите систему.
Способ 2. Проверьте, есть ли у сервиса доступ к файлам
Одной из причин появления вышеописанного сообщения может быть отсутствие прав доступа у службы к необходимым файлам.
- Нажмите Win + X и выберите Панель управления.
- Перейдите в раздел Администрирование и далее в Службы.
- В новом окне найдите конкретную службу, указанную в сообщении об ошибке.
- Нажмите по ней ПКМ и выберите Свойства.
- Откройте вкладку Вход в систему.
- Установите галочку на пункт: Разрешить взаимодействие с рабочим столом.
- Нажмите Применить и Ок.
- Попробуйте снова запустить программу.
Способ 3. Откат системы
Если приложение работало раньше, но с некоторых пор стала появляться вышеозначенная проблема, можно попробовать откатить систему до предыдущего состояния. Однако следует иметь в виду, что программу, возможно, придётся переустановить.
- Снова зайдите в Панель управления, как предложено в предыдущем способе.
- Выберите раздел Восстановление и далее Запуск восстановления системы.
- Отметьте дату, к которой необходимо откатить систему.
- Если точек восстановления недостаточно, установите галочку на соответствующий пункт.
- Затем нажмите Далее, чтобы запустить процесс.
Способ 4. Сброс Windows
Если ничего из вышеперечисленного не помогло решить проблему, попробуйте сбросить Windows к первоначальным настройкам. В результате этого действия личные файлы будут сохранены, однако многие программы, драйверы и обновления системы придётся установить заново.
- Щёлкните ПКМ по значку Windows и выберите Параметры.
- Перейдите в раздел Обновление и безопасность.
- Выберите пункт Восстановление, и справа нажмите Начать.
- Далее отметьте опцию сброса с сохранением личных файлов.
- Подтвердите сброс, нажав соответствующую кнопку.