Bellow는 외부 exe를 실행하려고하는 asp.net 서비스의 코드입니다. 내 Visual Studio에서 win7에서 제대로 작동하지만 내 서버 (server 2008)에서는 실패합니다. Myapp.exe는 runned 아래에 sufficiet 권한이없는 계정을 다시보고합니다. 서버asp.net 웹 서비스에서 특정 계정으로 외부 exe를 실행하는 방법은 무엇입니까?
List<ProcInfo> allProcesses = new List<ProcInfo>();
ProcessStartInfo pInfo = new ProcessStartInfo();
pInfo.FileName = binPath + @"\myApp.exe";
pInfo.WindowStyle = ProcessWindowStyle.Hidden;
pInfo.CreateNoWindow = true;
pInfo.UseShellExecute = false;
pInfo.RedirectStandardOutput = true;
string exitMsg = "";
int exitCode = 1;
try
{
using (Process proc = Process.Start(pInfo))
{
exitMsg = proc.StandardOutput.ReadToEnd();
proc.WaitForExit(1000);
exitCode = proc.ExitCode;
}
}
자원 풀은 충분한 priviliges와 계정에서 실행하고 또한 그 같은 자격 증명 여전히 아무것도 서비스를 시작하는 코드에 동일한 계정을 사용하려고했습니다.
나는 asp.net 작업자 스레드가 실행되는 계정에 몇 가지 추가 제한 사항이 있음을 알았습니다. 따라서 리소스 풀이 적절한 계정에서 실행 되더라도 충분한 권한이없는 것입니다. 또한 asp.net 서비스에서 외부 코드를 실행하는 유일한 방법으로 pInvoke 및 win32 API 호출을 사용하는 방법을 발견했습니다. 그러나 나는 어떤 win32 api 지식도없고 이것의 exples를 찾아 내지 않았다.
asp.net 서비스에서 지정한 계정으로 외부 exe를 실행하는 방법에 대해 매우 감사하게 생각합니다.
마지막 링크에서 코드를 시도했지만 나에게 적합하지 않습니다. 또한 새 창 시스템에서 작동하지 않는 코드에 대한 주석을 발견했습니다. 나는 처음 두 개의 링크를 연구하고 무언가를 조합하려고 노력해야 할 것 같아요. – Primoz
아마도 여기에 문제가 있습니다.
참고 : 가장을 시작한 사용자 컨텍스트 (즉, 전환 한 사용자 컨텍스트가 아님)는 "운영 체제의 일부로 작동"권한 세트가 있어야합니다. – Primoz
작업자 프로세스가 실행중인 계정에 [운영 체제의 일부로 작동] (http://technet.microsoft.com/en-us/library/dd349804 (WS.10) .aspx # BKMK_3)이 있는지 확인하십시오. 사용자 권한. 나는 그것을 서버 2008에서 사용 했으므로 직접 사용해 보았습니다. 편집 .. 그냥 위의 주석을 발견. 이 경우를 확인하십시오. – jdavies