2008-10-27 15 views

Respuesta

21

Definitivamente no puede asumir que: Windows podría instalarse en una letra de unidad diferente o en un directorio diferente. En un trabajo anterior, PC Windows se instaló en D: \ WINNT, por ejemplo.

La respuesta corta es usar la llamada API GetSystemDirectory(), que devolverá la ruta que está buscando.

La respuesta más larga es preguntar: ¿realmente necesita saber esto? Si lo está usando para copiar archivos en el directorio de Windows, le sugiero que pregunte si realmente quiere hacer esto. No se recomienda copiar en el directorio de Windows, ya que puede estropear otras aplicaciones muy fácilmente. Si está utilizando la ruta para encontrar archivos DLL, ¿por qué no simplemente confía en el sistema operativo para encontrar el adecuado sin dar una ruta? Si está buscando fragmentos de los archivos del sistema operativo, considere: ¿eso va a funcionar en el futuro? En general, es mejor no buscar explícitamente en el directorio de Windows si desea que su programa funcione en futuras versiones de Windows.

+1

Voto esta respuesta. El mío ha obtenido más votos de otros, pero definitivamente este es mucho más completo e informativo. Ohad42, considere marcar esta como la respuesta aceptada. – vmarquez

+0

Gracias David, siento que me tomó tanto tiempo aceptar la respuesta. –

2

Puede ser más seguro usar la variable de entorno "windir" y luego agregar "System32" al final de esa ruta. A veces, las ventanas pueden estar en una carpeta diferente o en una unidad diferente, por lo que "windir" te dirá dónde está.

Por lo que sé, la carpeta system32 siempre debe existir bajo la carpeta windows.

4

Windows se puede instalar en un disco duro diferente y/o en una carpeta diferente. Use las variables de entorno% windir% o% systemroot% para acceder a la carpeta windows y anexar system32. O use la variable% path%, generalmente es la primera entrada y el método preferido para buscar archivos como dlls AFAIK. Según los comentarios: no confíe demasiado en que el dir system32 sea el primer elemento. Sin embargo, creo que es seguro suponer que está en% path% en alguna parte.

+0

NO solo tome el primer elemento en% path%. Una gran cantidad de programas prefieren preincorporarse a PATH en lugar de post-append. System32 es aproximadamente noveno en mi LM PATH. – KTC

+0

Definitivamente cierto, solo asuma que está ahí en alguna parte, voy a editar :-) –

3

me gustaría utilizar la API de Win32 GetWindowsDirectory para obtener el directorio actual de Windows, agregar System32 a ella una continuación, comprobar si existe.

16

No, no puede suponer eso.

Windows se puede instalar en una ruta diferente. Una solución es buscarlo llamando a GetSystemDirectory (implementado como parte de la API de Windows).

0

Solo un FYI, pero en un entorno de Terminal Server (es decir, Citrix), GetWindowsDirectory() puede devolver una ruta única para un usuario remoto.

link text

A medida que más y más empresas usan escritorios virtualizados, los desarrolladores tienen que tener esto en cuenta.

Cuestiones relacionadas