0

관련 스마트 카드 (디지털 서명)로 응용 프로그램을 개발하고 있습니다. 이제 우리는이 두 가지 상황에서 같은 코드가 있다고 가정하자Windows 서비스와 콘솔 응용 프로그램 간의 사용 권한 차이

  • 콘솔 응용 프로그램, 관리자 사용자에 의해 실행을
  • 내가 suposed

관리자 사용자에 의해 실행 Windows 서비스, 즉이 두 코드 인 경우 동일한 사용자가 실행하면 동일한 권한을가집니다. 이것이 사실이 아닌 것으로 보인다. 나는 Windows 서비스로 할 때 내가 인터넷에서 읽을 어쩌면 권한 문제의 일부 왕 지금까지

TargetInvocationException 
CryptographicException 

Can't initialize DLL provider at System.Security.Cryptography.Utils.CreateProvHandle(. 

를 수신 (관리자 사용자로 실행 됨). 콘솔 응용 프로그램이 정상적으로 작동합니다.

  • Windows 서비스와 콘솔 응용 프로그램을 동일한 사용자가 실행하는 경우의 차이점은 무엇입니까?

  • Windows 서비스에서 동일한 결과를 얻을 수 있습니까? 그것을 해결하는 사람에 대한

무료 가상 맥주)

감사합니다!

답변

1

로컬 서비스, 네트워크 서비스 및 로컬 시스템으로 서비스를 실행 해 보았습니까? 이것들을 바꾸는 것과 아무런 차이가 없습니까? 내 파일을 액세스 할 수 있도록 로컬 서비스에서 로컬 시스템으로 변경해야한다는 것을 알고 있습니다. 파일을 사용하고 있는지는 확실하지 않지만 적어도 확인해야 할 사항은 있습니다.

+0

좋아, 고마워 브랜디, 그 일했습니다! :). 문제는 그 이유를 모른다는 것입니다. 네트워크 서비스가 인증서에 액세스 할 수 없어 다른 사용자로 변경되었습니다. 어떤 식 으로든 이해가 안되지만 인증서가 폴더에 있습니다. - c : \ windows \ system32 \ config \ systemprofile \ application data \ microsoft \ systemcertificates \ my \ certificates 이 파일은 다음 위치에 있습니다. 폴더에서 로컬 서비스와 함께 작동 할 수 있으며 오류가 발생하지 않습니다. - System.Security.Cryptography.Utils.CreateProvHandle (. )에서 DLL 공급자를 초기화 할 수 없습니다.이 파일이이 폴더에서 어떻게 종료되었는지 알고 계신가요? 감사합니다. Brandi! – user256038

0

불행히도 해결책이 없지만 Windows 서비스는 일반 프로그램과 완전히 다른 방식으로 작동합니다. 예를 들어 Windows 서비스에서 네트워크 드라이브에 액세스 할 수 없으면 해당 드라이브를 초기화하는 서비스가 시작된 후에 서비스가 시작됩니다.

서비스에 종속성을 추가하여 필요한 서비스 또는 의존성을 최소화 할 수 있습니다. 이 방법으로 문제를 해결할 수는 있지만 보장 할 수는 없습니다.

+0

감사합니다. Callash, Thanks a lot. 불행히도 내 서비스가 수동으로 시작되므로 가능한 모든 종속성이 해결됩니다. – user256038

+0

언제나 수동으로 서비스를 시작한다면, 내 질문에 신경 쓰지 않는다면, 처음에는 Windows 서비스로 사용하는 것이 무엇입니까? –

+0

예, 좋은 질문입니다.). 테스트 목적으로 서비스를 수동으로 시작합니다. 프로덕션 서버에서는 자동으로 시작해야합니다. – user256038

0

두통을 유발하는 콘솔 응용 프로그램과 Windows 서비스의 차이점은 Windows 서비스가 C : \ Windows \ System32을 현재 디렉토리로 사용한다는 사실입니다. 이 문제가 도움이 될지 모르겠지만 시도해 볼 수는 있습니다. http://igorbrejc.net/development/c/windows-services-and-working-directories

+0

전체 예외 설명 (스택 추적 포함)을 게시 할 수 있습니까? –

+0

나는 새로운 대답, 감사에 게시 : – user256038

관련 문제