2009-08-24 42 views
13

Làm cách nào tôi có thể nhận đường dẫn thư mục tạm thời của người dùng trong C++? Chương trình của tôi phải chạy trên Windows Vista và XP và chúng có các đường dẫn tạm thời khác nhau. Làm thế nào tôi có thể nhận được nó mà không mất khả năng tương thích?Tìm đường dẫn thư mục tạm thời của người dùng trong Windows

+2

Nếu bạn chỉ quan tâm đến các giải pháp cửa sổ bạn nên đặt rằng trong tiêu đề câu hỏi của bạn. –

Trả lời

6

Hàm GetTempPath truy xuất đường dẫn của thư mục được chỉ định cho các tệp tạm thời. Hàm này thay thế hàm GetTempDrive.

DWORD GetTempPath(

DWORD nBufferLength, // size, in characters, of the buffer 
LPTSTR lpBuffer // address of buffer for temp. path 
); 

thông số

nBufferLength

Chỉ định kích thước, trong nhân vật, của bộ đệm chuỗi xác định bởi lpBuffer.

lpBuffer

điểm cần một bộ đệm chuỗi mà nhận chuỗi null-chấm dứt chỉ định đường dẫn tập tin tạm thời.

Return Values ​​

Nếu chức năng thành công, giá trị trả về là chiều dài, trong nhân vật, của chuỗi sao chép vào lpBuffer, không bao gồm các ký tự null chấm dứt. Nếu giá trị trả về lớn hơn nBufferLength, giá trị trả về là kích thước của bộ đệm cần thiết để giữ đường dẫn. Nếu chức năng thất bại, giá trị trả về bằng không. Để có được thông tin lỗi mở rộng, hãy gọi GetLastError.

Bình luận

Chức năng GetTempPath nhận được đường dẫn tập tin tạm thời như sau:

  1. Con đường xác định bởi các biến môi trường TMP.
  2. Đường dẫn được chỉ định bởi biến môi trường TEMP, nếu TMP không được xác định.
  3. Thư mục hiện tại, nếu cả TMP và TEMP đều không được xác định.
+3

Bạn nên liên kết đến một tài liệu MSDN như trái ngược với bản sao và apsting nội dung – JaredPar

+4

Tôi thực sự đánh giá cao cả thông tin VÀ liên kết.Vấn đề với các liên kết là chúng bị thối theo thời gian. –

+0

-1 vì không cho biết đó là một báo giá, vì không trích dẫn nguồn của báo giá và để dán thông tin lỗi thời. –

1

GetTempPath sẽ không hoạt động trên Vista trừ khi người dùng có quyền truy cập quản trị. Tôi đang gặp sự cố đó ngay bây giờ với một trong các ứng dụng của tôi.

+0

Điều này không cung cấp câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ tác giả, để lại nhận xét bên dưới bài đăng của họ. –

2

Sử dụng GetTempPath() để truy xuất đường dẫn của thư mục được chỉ định cho các tệp tạm thời.

wstring TempPath; 
wchar_t wcharPath[MAX_PATH]; 
if (GetTempPathW(MAX_PATH, wcharPath)) 
    TempPath = wcharPath; 
3
#include <iostream> 
#include <string> 

int main(int argc, char* argv[]){ 

    std::cout << getenv("TEMP") << std::endl; 

    return 0; 
} 
Các vấn đề liên quan