2009-08-13 2 views
0

WinXP Pro SP3에서 VS 2005 및 C#을 사용하여 Windows 서비스를 작성했습니다. 완료까지 실행 된 후 종료되는 다른 프로그램을 시작합니다.Windows XP Pro 서비스가 로컬 시스템을 사용하지 않고 사용자 로그온을 사용하여 실행됩니다.

서비스는 installutil 및 serviceInstaller를 사용하여 설치됩니다. 빌드가 릴리스되어 C : \ Program Files \ MyService 디렉토리에 저장됩니다. serviceProcessInstaller 계정은 속성에서 LocalSystem으로 설정됩니다.

로컬 시스템에 로그온을 설정하면 (try-catch 블록을 사용하여) '액세스 거부'오류가 발생하지만 올바른 암호로 내 계정에 로그온을 설정하면 완벽하게 실행됩니다.

내가 뭘 잘못하고 있니? 모든 제안은 매우 환영 할 것입니다.

+0

나는 그렇게하기 위해 threp을 가진 충분한 사람들이 따라 다니면 더 좋을 것이라고 생각한다. :) – EBGreen

답변

0

액세스 거부 오류의 출처를 파악하는 것이 유용합니다. try/catch 블록에 있다고 가정하기 때문에이를 처리하는 코드라고 가정합니다. 즉, 귀하의 서비스가 정상적으로 시작되고 있지만 그 일을하는 데 문제가 있음을 의미합니다.

LocalSystem의 환경이 사용자 계정과 다르므로 환경 관련 문제 일 수 있습니다. 또한 시작되는 프로그램이 제대로 실행되지 않고 오류가 반환 될 수 있습니다.

더 많은 정보가 없으면 이는 단지 추측 일뿐입니다. 그 다른 프로그램은 무엇을하고 있습니까? 오류가 어디에서 발생합니까? 디버그하여 액세스 거부 오류를 반환하는 부분을 찾으십시오.

0

동의해야합니다. 그건 제외하고, 파일/폴더 권한 모래가 시스템에 실제로 필요한 권한이 있는지 확인하십시오. 레지스트리 키도 동일하게 수행하십시오. 시스템 이벤트 로그는 몇 가지 실마리를 제공합니다.

0

두 답변 : 도움에 감사드립니다.

Process.Start() 호출시 오류가 발생합니다.

파일 및 디렉터리 보안은 Everyone이 디렉터리와 실행 파일에 대한 모든 권한을 가지고 있음을 보여줍니다.

알아 두십시오! ProcessStartInfo 개체에 사용자 이름과 암호를 추가하여 대상 프로그램이 데이터베이스에 연결하려고 할 때 유용하다고 생각했습니다. 죄송합니다. 내가 그 물건을 꺼내 자마자, 대상이해야 할 것과 같이 jult를 실행합니다.

답장을 보내신 모든 분들께 다시 한번 감사드립니다. Mea Culpa!