2009-01-30 5 views
0

로그인 한 사용자 (로컬 관리자)로 실행되는 Windows 서비스가 있습니다. 시작하는 동안 "임시 클래스를 생성 할 수 없습니다 (결과 = 1)"라는 메시지가 나타납니다. 그래서 windows/temp 폴더로 이동하여 권한을 높이기 위해 UAC에 의해 메시지가 표시되었습니다. 이렇게 한 후 서비스가 정상적으로 시작됩니다. 그렇다면 Windows 서비스의 관점에서이 UAC 프롬프트를 어떻게 처리합니까?로그인 한 사용자로 실행중인 Windows 서비스에 UAC의 액세스 문제가 있습니다.

감사합니다.

답변

2

증상을 해결 한 이벤트 순서의 특정 문제를 넘어서서 원래 질문에 관해서.

로컬 관리자 그룹의 구성원 인 사용자가 UAC 아래의 컴퓨터에 로그온하면 두 가지 보안 토큰이 부여됩니다. 하나는 권한이 제한된 권한이고 다른 하나는 높은 권한 집합이있는 보안 토큰입니다. 기본적으로 높은 권한이 지정되지 않은 경우 낮은 권한이 사용됩니다. 지정하는 주요 수단은 UI를 통한 것입니다. 다른 방법은 응용 프로그램 매니페스트 (OS가이 응용 프로그램을 처리하는 방법을 지정하는 XML 파일)를 사용하는 것입니다. 확실 해요
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" name="MY_APPLICATION_NAME" type="win32"/> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator"/> </requestedPrivileges> </security> </trustInfo> </assembly>
을이 같이 보일 것이다 매니페스트의 'my_application_name.exe.manifest "

은 XML : 매니페스트 파일은 다음 형식을 사용하여 실행 파일과 같은 폴더에 저장하고 이름을 지정해야합니다 당신은 "UAC Manifest"를 검색하여 더 자세한 정보를 찾을 수 있습니다 ...

희망이 유용합니다 ...

0

나는 아직도 내 질문에 대답하는 방법을 모르겠지만 내 문제를 해결했습니다. 기본적으로 내 서비스는 부트 스트랩 프로세스에서 temp 디렉토리를 상속 받았다. 그래서 나는 현재 사용자의 임시 디렉토리를 사용하도록 변경했다. 이러한 라인을 따라 뭔가를해야합니다

myProcess.StartInfo.EnvironmentVariables.Add ("TempPath", "C : \ 온도")

0

왜 Windows 서비스가 LocalSystem으로 실행하지를?

관련 문제