Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как получить доступ к созданию службы с опубликованного на сервере IIS сайта?

36K
01 июня 2009 года
lesovick
22 / / 09.04.2009
Создал веб-сайт, с которого пытаюсь зарегистрировать свою службу на своём компе с помощью функций WINAPI. Для этого надо сначала получить HANDLE менеджера служб с помощью функции OpenSCManager. На C# как-то так:

[DllImport("advapi32.dll", EntryPoint = "OpenSCManagerW", ExactSpelling = true, CharSet = CharSet.Unicode, SetLastError = true)]
public static extern IntPtr OpenSCManager(string machineName, string databaseName, uint dwAccess);
[Flags]
enum MyFlags : uint
{
SC_MANAGER_CREATE_SERVICE = 0x0002,
}
protected void Button1_Click(object sender, EventArgs e)
{
string HostName = "o22-471-GVV";
IntPtr schSCManager = OpenSCManager(HostName, null, (uint)(MyFlags.SC_MANAGER_CREATE_SERVICE));
}

Когда запускаю сайт в режиме отладки, с помощью "ASP.NET Development Server", всё работает. Когда публикую сайт на сервере IIS, при попытке получить HANDLE менеджера служб вылетает исключение "Отказано в доступе". В системе работаю, как администратор.

Как получить доступ к созданию службы с опубликованного на сервере IIS сайта?
5
01 июня 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: lesovick

Как получить доступ к созданию службы с опубликованного на сервере IIS сайта?


Под какой учетной записью работает веб-приложение? Для создания сервиса она должна обладать правами администратора (а это здоровенная дырка в безопасности). Вообще не могу представить себе задачу, для которой потребовался бы такой функционал. Чем installutil или sc не устраивает?

36K
01 июня 2009 года
lesovick
22 / / 09.04.2009
Размещаясь на "ASP.NET Development Server", приложение работает от имени текущего пользователя, то есть меня - администратора. В этом случае, как я уже говорил, всё в порядке - служба регистрируется в системе.

Размещаясь на сервере IIS v5.1 (Internet Information Services), приложение работает от имени пользователя ASPNET, и вот для него надо задавать определённые права доступа (например, я работаю с ini-файлом, и после публикации мне пришлось прописывать в нём, что пользователь ASPNET имеет на него полные права доступа).

Так вот: ГДЕ надо прописать права доступа для ASPNET, чтобы он имел возможность зарегистрировать мою службу??

P.S.: что такое sc я не знаю, а installutil... Т.е. вы хотите спросить, почему для создания службы нельзя использовать инструменты ".NET" вместо "WINAPI"? Мне надо, чтобы при создании службы в её свойствах была АВТОМАТИЧЕСКИ проставлена галочка "Разрешить взаимодействие с рабочим столом", а ".NET" этого сделать не позволяет. У меня интерактивная служба.

P.P.S.: общая же задача такова: создать веб-интерфейс для управления созданием-конфигурацией-запуском-остановкой-удалением служб на хостах сравнительно небольшой изолированой локальной сети. Не думаю, чтобы вопрос безопасности стоял здесь особо остро... Ну, по крайней мере прямо сейчас это не самая главная проблема.
5
01 июня 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: lesovick
P.P.S.: общая же задача такова: создать веб-интерфейс для управления созданием-конфигурацией-запуском-остановкой-удалением служб на хостах сравнительно небольшой изолированой локальной сети. Не думаю, чтобы вопрос безопасности стоял здесь особо остро... Ну, по крайней мере прямо сейчас это не самая главная проблема.


Наберите в консоли:

 
Код:
sc /?

Правда, без веб интерфейса.... (но зачем он для установки службы-то?).
5
01 июня 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: lesovick

Так вот: ГДЕ надо прописать права доступа для ASPNET, чтобы он имел возможность зарегистрировать мою службу??

Скорее всего в группу "Администраторы" добавить нужно.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог