2009-10-23 3 views
3

현재 Delphi 7로 작성된 Delphi .CPL은 HKLM (서비스 응용 프로그램에서 사용)의 설정을 업데이트해야하며 Vista, Win7 및 Server 2008을 지원해야합니다. 현재 RUNASADMIN 값을 추가하여이 작업을 수행 할 수 있습니다 CPL 파일을 값 이름으로 사용하여 AppCompatFlags/Layers로 복사합니다. 이로 인해 Windows에서 '레거시 제어판 애플릿'에 대한 권한 상승을 요청합니다.델파이 제어판 애플릿을 '레거시'가 아닌 것으로 만드는 방법은 무엇입니까?

'레거시'로 보이지 않고 가능한 한 레지스트리 설정이나 권한 상승이 필요없는 델파이 2010에서 CPL을 빌드하는 방법을 찾아야합니다. Common-Controls v6 및 "requireAdministrator"를 참조하는 DLL/CPL에 일반적인 매니페스트 리소스를 추가해도 문제가 해결되지 않으며 권한 상승이 요청되지 않고 HKLM 액세스가 실패합니다. 원본 파일과 Delphi 2010.CPL은 모두 SYSWOW64의 파일을 탐색하고 마우스 오른쪽 버튼을 클릭 한 다음 '관리자 권한으로 실행'하여 권한 상승 후 올바르게 실행될 수 있습니다.

나중에 포럼 게시판 here에서이 방법으로 DLL을 향상시킬 수없는 이유에 대한 succint 설명을 발견했습니다.

답변

1

나는 내 질문에 더 나은 대답을 찾은 것 같습니다. 이며 '비 유산'컨트롤 패널 애플릿과 같은 동물이며 MSDN here에 설명되어 있습니다. "이제 Windows Vista에서는 .cpl 파일을 만드는 대신 직접 애플릿을 실행하고 등록하여 제어판에 자신의 애플릿을 추가 할 수 있습니다."

2

나는 COM 표고를 사용해야한다고 생각합니다. 게시판에 게시 된 멋진 블로그 게시물이 게시 된 것으로 보이지만 게시물의 소스 코드는 VCL 구성 요소 website에 여전히 available입니다.

+0

감사합니다. 솔루션을 사용할 수 있다고 생각합니다. 그런 식으로 결정하면 코드가 유용 할 것입니다. 그러나 CPL을 사용하는 아이디어를 포기하고 정규 EXE로 서비스 관리를 수행하는 것이 더 간단 할 수 있습니다. – frogb

+0

어떤 방법으로 위에서 언급 한 COM 상승 방법을 사용하여 HKLM 레지스트리 변경 내용을 적용하기 위해 "적절한 시간에"자신을 높일 수 있습니다. – skamradt