2011-11-30 2 views
1

저는 작업 컴퓨터에서 하드 드라이브를 가져와의 서비스 구성을 조정해야합니다. 레지스트리의 서비스를 편집하는 데 사용되는 Windows API OpenSCManager에는 희박하게 설명 된 lpDatabaseName 매개 변수가 있습니다. 작동 을 실행하지만 실행하지 않는 경우 Windows 설치가 드라이브 E:\으로 마운트 된 경우 사용할 수 있습니까? (실행중인 Windows 설치는 드라이브 C:\에 탑재 됨)OpenSCManager를 사용하여 실행되지 않는 Windows 설치의 서비스 데이터베이스로드

예 : OpenSCManager(NULL, "E:\Windows\WHAT_IS_THE_FILENAME", SC_MANAGER_ALL_ACCESS). 그런 다음 핸들을 사용하여 드라이브 E:\의 서비스 구성을 편집 하시겠습니까? 두 번째 매개 변수의 파일 경로는 무엇입니까? 즉, 드라이브 E:\에서이 서비스 데이터베이스 파일을 어디에서 찾을 수 있습니까?

+0

나는 그것을 심각하게 의심합니다. SCM 기능은 LPC를 통해 SCM의 실행중인 인스턴스와 통신한다는 것을 이해합니다. 오프라인 설치 작업에이 파일을 사용할 수 있는지는 의심 스럽습니다. 그러나 로켓 과학이 아닙니다. 오프라인 시스템의 레지스트리를 직접 조작하여 원하는 결과를 얻을 수 있습니다. – Luke

+0

예 그렇지만 Windows 버전이 동일하면 어떻게 될까? 데이터베이스가 동일하지 않습니까? 'OpenSCManager()''lpDatabaseName' 매개 변수의 목적은 무엇입니까? 정상적으로 어떻게 사용됩니까? – unixman83

+1

아마도 이전 버전과의 호환성을위한 잔여 물입니다. AFAIK lpDatabaseName 매개 변수는 오직 NULL이거나 SERVICES_ACTIVE_DATABASE 일 수 있습니다. SERVICES_FAILED_DATABASE에 대한 정의도 있지만 열려고하면 ERROR_DATABASE_DOES_NOT_EXIST가됩니다. 다른 문자열을 전달하면 ERROR_INVALID_NAME이 (가)됩니다. 다음은이 매개 변수를 설명하는 프로토콜에 대한 일부 [documentation on] (http://msdn.microsoft.com/en-us/library/cc245942%28v=PROT.10%29.aspx)입니다. – Luke

답변