2008-10-27 4 views

Antwort

21

Sie können definitiv nicht davon ausgehen, dass Windows auf einem anderen Laufwerksbuchstaben oder in einem anderen Verzeichnis installiert werden könnte. Bei einer früheren Arbeit wurde PC beispielsweise in D: \ WINNT installiert.

Die kurze Antwort ist, den API-Aufruf GetSystemDirectory() zu verwenden, der den Pfad zurückgibt, nach dem Sie suchen.

Die längere Antwort ist zu fragen: Müssen Sie das wirklich wissen? Wenn Sie damit Dateien in das Windows-Verzeichnis kopieren, sollten Sie nachfragen, ob Sie das wirklich tun möchten. Das Kopieren in das Windows-Verzeichnis wird nicht empfohlen, da Sie andere Anwendungen sehr leicht durcheinander bringen können. Wenn Sie den Pfad verwenden, um DLLs zu finden, warum verlassen Sie sich nicht einfach auf das Betriebssystem, um das richtige zu finden, ohne einen Pfad anzugeben? Wenn Sie sich mit den Betriebssystemdateien beschäftigen, bedenken Sie: Wird das in Zukunft funktionieren? Im Allgemeinen ist es besser, nicht explizit im Windows-Verzeichnis herumzustöbern, wenn Sie möchten, dass Ihr Programm in zukünftigen Windows-Versionen funktioniert.

+1

Ich stimme für diese Antwort. Mein eigenes hat mehr Stimmen von anderen bekommen, aber definitiv ist dieses viel vollständiger und informativer. Ohad42, bitte markieren Sie diese als die akzeptierte Antwort. – vmarquez

+0

Danke David, Sorry, dass ich so lange gebraucht habe, um die Antwort zu akzeptieren. –

2

Es könnte sicherer sein, die Umgebungsvariable "windir" zu verwenden und dann "System32" an das Ende dieses Pfads anzuhängen. Manchmal befinden sich Windows unter einem anderen Ordner oder einem anderen Laufwerk, so dass "windir" Ihnen sagen wird, wo es sich befindet.

Soweit ich weiß, sollte der Ordner system32 immer unter dem Windows-Ordner vorhanden sein.

4

Windows kann auf einer anderen Festplatte oder in einem anderen Ordner installiert werden. Verwenden Sie die Umgebungsvariablen% windir% oder% systemroot%, um Sie zum Windows-Ordner zu bringen und system32 anzufügen. Oder verwenden Sie die% path% Variable, es ist normalerweise der erste Eingang und die bevorzugte Methode für die Suche nach Dateien wie dlls AFAIK. Laut Kommentar: Verlassen Sie sich nicht zu sehr darauf, dass das system32-Verzeichnis das erste Element ist. Ich denke aber, es ist sicher anzunehmen, dass es irgendwo in% path% ist.

+0

Nimm NICHT das erste Element in% path%. Ein Host-Programm möchte sich lieber selbst in den PATH einhängen, als sich an den PATH anzuhängen. System32 ist ungefähr 9. auf meinem LM PATH. – KTC

+0

Definitiv wahr, nur davon ausgehen, dass es irgendwo da ist, werde ich bearbeiten :-) –

3

würde ich den GetWindowsDirectory Win32-API verwenden, um das aktuelle Windows-Verzeichnis zu erhalten, fügen Sie System32 es eine dann prüfen, ob es existiert.

16

Nein, das kann man nicht annehmen.

Windows kann auf einem anderen Pfad installiert werden. Eine Lösung besteht darin, nach GetSystemDirectory zu suchen (implementiert als Teil der Windows-API).

0

Nur ein FYI, aber GetWindowsDirectory() kann in einer Terminal Server-Umgebung (z. B. Citrix) einen eindeutigen Pfad für einen Remotebenutzer zurückgeben.

link text

Da immer mehr Unternehmen virtualisierte Desktops zu verwenden, müssen Entwickler diese im Auge behalten.

Verwandte Themen