내 응용 프로그램이 서비스로 실행되며 어느 시점에 시스템의 기존 사용자 계정을 모두 순환해야합니다 (이 작업은 NetUserEnum()
과 함께 수행 할 수 있습니다) 발견 된 각 사용자의 % APPDATA % 경로 아래에 파일이 있습니다. 문제는 그 사용자 특정 경로 (% APPDATA %)를 얻는 방법을 모른다는 것입니다.Windows 서비스 : 각 사용자의 % APPDATA % 변수 가져 오기
응용 프로그램이 서비스 (SYSTEM)로 실행되므로 환경 또는 SHGetFolderPath()
을 사용할 수 없습니다. 처음에는 LogonUser()
을 사용할 수 있다고 생각했지만 사용자, 관리자 또는 시스템에서 응용 프로그램 테스트 코드를 실행하더라도 항상 오류 1326이 나옵니다. (테스트 플랫폼으로 winxp). 사용자 로그인 핸들을 얻을 수있는 방법이 있다면 SHGetFolderPath()
또는 ExpandEnvironmentStringsForUser()
API에서 사용할 수 있습니다. 맞습니까?
그래서, LogonUser (함께 지금까지 시도 코드)는 다음에 관한 것입니다 (예, 사용자 이름이 올바른지) : 아마 비밀번호를 원하지만 내가 아는 방법이 없습니다
LogonUser(
pw->usri1_name,
L".",
NULL,
LOGON32_LOGON_BATCH,
LOGON32_PROVIDER_DEFAULT,
&authtoken
)
해당 고객에 기계. 빠른 검색에서 찾은 모든 API는 LogonUser()에서 HANDLE에 의존합니다. 나는 분명히 가질 수 없습니다 ...
모든 까다 롭고 까다로운 아이디어를 환영합니다!
% appdata %는 다양한 시스템 출시와 아마도 언어에서도 다를 수 있습니다. 테스트 할 수 없으므로 간단히 말할 수 없습니다. 나는 할 수있다, 그러나 적어도 나는 그것이 내려 오지 않기를 바란다?/facepalm/ – einclude
오류 1326은'ERROR_LOGON_FAILURE' (로그온 실패 : 알 수없는 사용자 이름 또는 잘못된 암호)입니다. 예를 들어 암호를 제공하지 않습니다. –