Задача простая: запустить процесс под определенным пользователям.
Просто создать процесс получается без проблем:
[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.
Заранее спасибо.