Создание процесса в SQL CLR
От: SokolTry  
Дата: 11.02.09 12:12
Оценка:
Задача простая: запустить процесс под определенным пользователям.

Просто создать процесс получается без проблем:
        [Microsoft.SqlServer.Server.SqlFunction]
        public static string CreateProcess()
        {
            Process.Start(@"C:\WINDOWS\notepad.exe");
            return "";
        }

После вызова функции появляется процесс "notepad" запущенный под пользователем "SYSTEM"


Если же попытаться запустить процесс под другим пользователем:
        [Microsoft.SqlServer.Server.SqlFunction]
        public static string CreateProcess()
        {
            SecureString ssPassword = new SecureString();
            foreach (char c in "password")
                ssPassword.AppendChar(c);

            Process.Start(@"C:\WINDOWS\notepad.exe", "admin", ssPassword, "");

            return "";
        }

возникает следующее сообщение об ошибке:

A .NET Framework error occurred during execution of user defined routine or aggregate 'CreateProcess':
System.ComponentModel.Win32Exception: Access is denied
System.ComponentModel.Win32Exception:
at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start(String fileName, String userName, SecureString password, String domain)
at HFUDF.HFUDFFunctions.CreateProcess()


Видимо не хватает прав, но кому и каких?
Сборка регистрируется как UNSAFE.

Заранее спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.