Отказано в доступе 0x80070005 в ASP.net с использованием SMO SQL Server - PullRequest
2 голосов
/ 21 декабря 2011

Я пытаюсь создать простую веб-форму, которая даст мне кнопку перезапуска службы на экране.

После нажатия кнопки я создаю объект SMO для связи с базой данных SQL Server и пытаюсь остановитьи запустите сервис MSSQLSERVER.Все идет хорошо до тех пор, пока не будет вызван метод Stop(), после чего будет сгенерировано исключение:

Доступ запрещен.(Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))

Код под кнопкой следующий:

// connect the to server
ManagedComputer computer = 
    new ManagedComputer("172.16.150.52",@"Administrator","secret");

// return if there is a problem
if (computer.Services["MSSQLSERVER"] == null)
{
    PageErrorMessage = "Bad or missing service \"MSSQLSERVER\"";
    return;
}

// get the SQL Server Service
Service sqlServer = computer.Services["MSSQLSERVER"];

// is the server running?
if (sqlServer.ServiceState == ServiceState.Running)
    sqlServer.Stop();

// wait for it to stop completely
int timeout = 0;
while (sqlServer.ServiceState != ServiceState.Stopped || timeout <= 60)
{
    Thread.Sleep(1000);
    sqlServer.Refresh();
    timeout++;
}

if (timeout > 60)
{
    PageErrorMessage = "Stop operation has timed out after 60secs";
    return;
}

// start it again!
sqlServer.Start();

IP-адрес, имя пользователя и пароль верны на 100%.Кто-нибудь знает, почему это вызовет исключение AccessDenied?

1 Ответ

1 голос
/ 24 декабря 2011

Звучит так, как будто вам не хватает UAC. Зачастую для выполнения общесистемных задач, таких как перезагрузка, выключение (и, возможно, также запуск / остановка служб), вам необходимо получить повышенные привилегии, включая получение токена и т. Д.

Взгляните на эту статью - http://www.codeproject.com/KB/vista-security/UAC__The_Definitive_Guide.aspx - она ​​мне несколько раз помогла.

Но http://www.codeproject.com/KB/vista-security/ElevatedPrivilegesDemand.aspx также может быть полезным.

Я только когда-либо делал эту клиентскую сторону сам - я не знаю, как она работает при работе на сервере. Для этого вы можете взглянуть на: http://blogs.msdn.com/b/lightswitch/archive/2011/04/07/how-to-elevate-permissions-in-server-code-ravi-eda.aspx

И если это не код, а конфигурация, взгляните на это: http://www.lansweeper.com/kb/WMI-Access-is-denied.aspx

...