도움이 필요한 작업은 IIS가 동일한 서버 설치에있는 인트라넷 웹 페이지에서 자체 서버 디스크의 EXE 파일을 실행하는 것입니다. 웹 페이지는 비즈니스 레이어를 사용하여 주어진 매개 변수와 함께 ProcessStart를 실행합니다.IIS AppPool 데스크톱 권한 부여 방법
웹에서 실행을 수행하면 작업 관리자는 응용 프로그램이 웹 페이지의 IIS AppPool로 사용자로 시작한다는 것을 나타냅니다. 몇 초 후에 그것은 죽었습니다. 내 데이터베이스 로그에서 볼 수 있습니다; 맞습니다
The Microsoft Jet database engine cannot open the file '\\computer\pathfile.ext'. It is already opened exclusively by another user, or you need permission to view its data.
. EXE 도구는 차례로 다른 컴퓨터에서 파일을로드합니다. 이것은 데스크톱에서 도구를 사용하는 동안 잘 연구되고 잘 작동하는 특수한 동작입니다.
내 목표/질문
,나는 데스크탑 권한으로 동작이-웹 함수를 호출합니다. 전혀 가능합니까?
IIS AppPool에는 ApplicationPoolIdentity 계정을 사용하는 일반 설치가 있습니다. < = IIS6 이후로 IIS 7.5 및 Windows Server 2008 R2가 보안 모델을 얼마나 많이 확보했는지에 대한 지식없이 "현명하지 못한"것처럼 보였습니다.
app-pool 사용자를 관리자 인 NetworkService로 변경하려고했습니다.
나는
은 그 때 나는 시작했다 .. 나는 심지어 내 응용 프로그램에 대한 호출을 배치 파일을 실행하는 웹 애플리케이션을 수 있도록 노력/우
을 읽을 간부 등의 응용 프로그램 풀에 응용 프로그램을 설정하려고 ProcessStart 동작을 변경합니다. 그리고 여기, 나는 무엇을해야할지 많이 알지 못합니다. 나는 동사 runas를 추가하려고 노력했다. 강제로 암호 프롬프트가 해결책이 아닙니다. 사용자 이름/비밀번호를 시뮬레이트했습니다. 운이 없다. 나는 또한 데스크탑 명령 창에서/savecred를 사용한 후에 ProcessStart를 매개 변수로 사용하여 runas/user : blabla를 추가하려고 시도했습니다. 운이 없다.
아마도 작동해야하지만 속성의 올바른 설정을 이해하지 못했습니다. 아래에 ProcessStart 코드 스 니펫을 추가하고 내가 시도한 것을 볼 수 있도록 주석이 달린 코드를 추가했습니다.
public string RunProcess(ApplicationType type, int param)
{
currentSelection = GetApplicationType(type);
ProcessStartInfo info = new ProcessStartInfo(currentSelection.Path);
info.CreateNoWindow = false;
info.UseShellExecute = true;
//info.UseShellExecute = false;
//info.ErrorDialog = false;
//info.UserName = "dummyUsEr";
//info.Password = this.SecurePwd("DummyPWd");
info.WindowStyle = ProcessWindowStyle.Normal;
info.Arguments = string.Format(" {0}", param.ToString());
using (Process exec = Process.Start(info))
{
try
{
exec.WaitForExit();
}
catch
{
}
}
return output;
}
편집
그냥 명확하게하기 위해, 그리고 아마도이 질문에 대한 몇 가지 다른 남자/여자 브라우징을 도와, 내가 암호 세대의 조각을 부착, 내가 볼
protected System.Security.SecureString SecurePwd(string pwd)
{
SecureString securePwd = new SecureString();
foreach (char ch in pwd.ToCharArray())
securePwd.AppendChar(ch);
return securePwd;
}
IIS를 서버 관리자로 실행하면 웹 응용 프로그램에서 프로세스를 실행할 수 있지만 '\\ computer \ pathfile.ext'가 다른 프로세스에 의해 잠겨져 오류 메시지가 나타나면 오류가 발생할 수 있습니다 귀하의 프로세스 중. –
@Max, 감사합니다. 하지만 '데이터를 볼 수있는 권한이 필요합니다'라는 다른 부분을 입력하는 것을 잊어 버렸습니다. 나는 또한 반복 할 것이다 - 이것은 잘 연구되고 잘 정립 된 데스크탑 애플리케이션이다. IIS 권한에 대해 잘 이해하지 못하면 전체 IIS를 관리자로 실행하는 것이 현실적으로 불가능합니다. 이 컴퓨터에는 다른 웹 응용 프로그램 및 다른 응용 프로그램 풀이 있습니다. – Independent
시나리오를 증명하기 위해 동일한 비즈니스 로직을 상속받은 단순한 WPF GUI를 배포했습니다. 몇 개의 버튼을 추가하고 콘솔에서 실행합니다. 타다. 이 권리가 IIS 격리에서 제공 될 수 있다면 얼마나 좋을까요? – Independent