최근에 흥미로운 문제가 발견되었습니다. SetEnvironmentVariable을 사용할 때 Process Explorer를 사용하여 새로 만든 환경 변수를 가져올 수 있습니다. 그러나 프로세스 자체가 32 비트이고 OS가 64 비트 인 경우 프로세스 탐색기 (최소 v10 ~ 최신 v11.33)는 새 변수를 찾을 수 없습니다. 프로그램이 네이티브 64 비트라면 32 비트 OS에서 실행되는 32 비트 프로세스뿐만 아니라 모든 것이 잘 작동합니다.SetEnvironmentVariable in 32bit 64 비트 Windows OS에서 처리
반환 값이 TRUE이고 GetEnvironmentVariable을 호출하면 올바른 값을 반환하므로 SetEnvironmentVariable API 호출이 성공해야합니다. 또한 자식 프로세스를 만들면 프로세스 탐색기를 사용하여 새 프로세스에서 변수가 올바르게 설정되었는지 확인할 수 있습니다.
이것이 SysWOW64의 제한 사항이거나 Process Explorer의 버그 인 경우 아닙니다. 누구?
그리고 32 비트 환경 변수를 올바르게 가져올 수있는 방법이 있습니까? (
#include <stdio.h>
#include <windows.h>
int main(int argc, char *argv[])
{
printf("setting variable... %s\n",
SetEnvironmentVariable("a_new_var", "1.0") ? "OK" : "FAILED");
printf("press anykey to continue...\n");
getchar();
// system(argv[0]); // uncomment to inspect the child process
return 0;
}
어쨌든 정확한 결과를 얻으 려니? 32 비트 프로세스에서 64 비트 env 블록을 변경하거나 32 비트 모드에서 작동하는 PE 스위치를 찾을 수 없습니다. – Francis
나는 그렇게 생각하지 않습니다. 네가 필사적이라면 나는 다른 도구를 추천 할 수있다 ... – wj32