Как получить доступ к созданию службы с опубликованного на сервере IIS сайта?
[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 сайта?
Цитата: lesovick
Как получить доступ к созданию службы с опубликованного на сервере IIS сайта?
Под какой учетной записью работает веб-приложение? Для создания сервиса она должна обладать правами администратора (а это здоровенная дырка в безопасности). Вообще не могу представить себе задачу, для которой потребовался бы такой функционал. Чем installutil или sc не устраивает?
Размещаясь на сервере IIS v5.1 (Internet Information Services), приложение работает от имени пользователя ASPNET, и вот для него надо задавать определённые права доступа (например, я работаю с ini-файлом, и после публикации мне пришлось прописывать в нём, что пользователь ASPNET имеет на него полные права доступа).
Так вот: ГДЕ надо прописать права доступа для ASPNET, чтобы он имел возможность зарегистрировать мою службу??
P.S.: что такое sc я не знаю, а installutil... Т.е. вы хотите спросить, почему для создания службы нельзя использовать инструменты ".NET" вместо "WINAPI"? Мне надо, чтобы при создании службы в её свойствах была АВТОМАТИЧЕСКИ проставлена галочка "Разрешить взаимодействие с рабочим столом", а ".NET" этого сделать не позволяет. У меня интерактивная служба.
P.P.S.: общая же задача такова: создать веб-интерфейс для управления созданием-конфигурацией-запуском-остановкой-удалением служб на хостах сравнительно небольшой изолированой локальной сети. Не думаю, чтобы вопрос безопасности стоял здесь особо остро... Ну, по крайней мере прямо сейчас это не самая главная проблема.
Цитата: lesovick
P.P.S.: общая же задача такова: создать веб-интерфейс для управления созданием-конфигурацией-запуском-остановкой-удалением служб на хостах сравнительно небольшой изолированой локальной сети. Не думаю, чтобы вопрос безопасности стоял здесь особо остро... Ну, по крайней мере прямо сейчас это не самая главная проблема.
Наберите в консоли:
Код:
sc /?
Правда, без веб интерфейса.... (но зачем он для установки службы-то?).
Цитата: lesovick
Так вот: ГДЕ надо прописать права доступа для ASPNET, чтобы он имел возможность зарегистрировать мою службу??
Скорее всего в группу "Администраторы" добавить нужно.