2008-10-27 6 views

답변

21

다음과 같은 가정은 할 수 없습니다. Windows는 다른 드라이브 문자 나 다른 디렉토리에 설치할 수 있습니다. 이전 작업에서 PC Windows는 D : \ WINNT에 설치되었습니다.

짧은 대답은 API 호출 GetSystemDirectory()를 사용하면 이후에있는 경로를 반환합니다.

더 이상 대답해야 할 질문입니다. 이것을 꼭 알아야합니까? 파일을 Windows 디렉터리에 복사하는 데 사용하는 경우 실제로이 작업을 수행 할 것인지 묻는 것이 좋습니다. 다른 응용 프로그램을 아주 쉽게 망칠 수 있으므로 Windows 디렉토리로 복사하는 것은 권장되지 않습니다. 경로를 사용하여 DLL을 찾는 경우 OS를 사용하여 경로를 지정하지 않고 적절한 경로를 찾지 않는 이유는 무엇입니까? OS 파일을 조금이라도 파고 들면 다음과 같은 점을 고려하십시오. 일반적으로 향후 Windows 버전에서 프로그램을 작동 시키려면 Windows 디렉토리에서 명시 적으로 찌르지 않는 것이 좋습니다.

+1

이 답변에 투표하십시오. 내 자신은 다른 사람들로부터 더 많은 표를 얻었지만, 분명히이 사람은 훨씬 더 완전하고 유익합니다. Ohad42, 허용되는 답변으로 표시하는 것이 좋습니다. – vmarquez

+0

데이비드 감사합니다. 너무 오랜 시간이 걸려서 죄송합니다. –

2

"windir"환경 변수를 사용하고 "System32"를 해당 경로의 끝에 추가하는 것이 더 안전 할 수 있습니다. 때로는 Windows가 다른 폴더 또는 다른 드라이브 아래에있을 수 있으므로 "windir"이 어디에 있는지 알려줍니다.

내가 아는 한, system32 폴더는 항상 windows 폴더 아래에 있어야합니다.

4

Windows는 다른 하드 드라이브 및 다른 폴더에 설치할 수 있습니다. % windir % 또는 % systemroot % 환경 변수를 사용하여 windows 폴더로 이동하고 system32를 추가하십시오. 또는 % path % 변수를 사용하십시오. 일반적으로 dll AFAIK와 같은 파일을 검색하는 기본 입력 방법입니다. 의견에 따르면 : 첫 번째 항목이 system32 디렉토리에 너무 많이 의존하지 마십시오. 나는 그것이 어딘가에 % 경로 %에 있다고 가정하는 것이 안전하다고 생각합니다.

+0

% path %의 첫 번째 항목 만 가져 가지 마십시오. 프로그램의 호스트는 post-append가 아닌 PATH에 미리 추가하는 것과 같습니다. System32는 내 LM PATH에서 약 9 번째입니다. – KTC

+0

확실히 사실입니다. 어딘가에 있다고 가정하고, 편집하겠습니다 :-) –

3

나는 현재 Windows 디렉터리를 얻기 위해 GetWindowsDirectory는 Win32 API를 사용하여 존재하는 경우 다음 확인 그것에 SYSTEM32를 추가합니다.

16

아니요, 그렇게 생각할 수 없습니다.

Windows는 다른 경로에 설치할 수 있습니다. 한 가지 해결책은 GetSystemDirectory (Windows API의 일부로 구현 됨)를 호출하여이를 찾는 것입니다.

0

참고로 터미널 서버 환경 (예 : Citrix)에서는 GetWindowsDirectory()가 원격 사용자의 고유 경로를 반환 할 수 있습니다. 점점 더 많은 기업들이 가상화 된 데스크톱을 사용할 때

link text

는, 개발자들은이 점을 명심해야합니다.

관련 문제