Tôi có một mã tạo tệp trong thư mục do người dùng chỉ định. Người dùng có thể trỏ đến một thư mục mà trong đó anh ta không thể tạo tệp, nhưng anh ta có thể đổi tên nó.Làm thế nào để kiểm tra xem một tập tin có thể được tạo bên trong thư mục nhất định trên MS XP/Vista không?
Tôi đã tạo thư mục cho mục đích thử nghiệm, hãy gọi nó là C:\foo
.
Tôi đã điều khoản sau đây để C:\foo
:
- Vượt qua thư mục/Execute tập tin
- Loại bỏ các thư mục con và các tập tin
- Loại bỏ
- đọc quyền
- quyền Change
- Chiếm quyền sở hữu
tôi không có bất cứ quyền sau đây để C:\foo
:
- Full Control
- tạo file
- tạo thư mục
Tôi đã thử phương pháp sau đây, cho đến nay:
os.access('C:\foo', os.W_OK) == True
st = os.stat('C:\foo')
mode = st[stat.ST_MODE]
mode & stat.S_IWRITE == True
Tôi tin rằng điều này là do thực tế là tôi có thể đổi tên thư mục, vì vậy nó có thể thay đổi đối với tôi. Nhưng đó là nội dung - không.
Có ai biết làm thế nào tôi có thể viết mã sẽ kiểm tra một thư mục nhất định nếu người dùng hiện tại có quyền tạo tệp trong thư mục đó không?
Tóm tắt - Tôi muốn kiểm tra xem người dùng hiện tại có Tạo tệp và tạo thư mục quyền đối với tên thư mục đã cho không.
EDIT: Sự cần thiết của mã như vậy phát sinh từ các trường hợp thử nghiệm không có 3 từ 'chứng nhận cho Windows Vista' chương trình, trong đó nêu:
- Ứng dụng này không phải cho phép người dùng Least-Privileged để tiết kiệm bất kỳ tệp nào vào thư mục Hệ thống Windows để vượt qua trường hợp thử nghiệm này.
Điều này có nên được hiểu là 'Ứng dụng có thể tìm cách lưu tệp trong thư mục Hệ thống Windows nhưng không bị lỗi khi không thành công?' hay đúng hơn 'Ứng dụng phải thực hiện kiểm tra bảo mật trước khi thử lưu tệp?'
Tôi có nên ngừng làm phiền chỉ vì bản thân Windows Vista sẽ không cho phép người dùng ít quyền ưu tiên lưu bất kỳ tệp nào trong% WINDIR%?
Cảm ơn bạn. Tôi sẽ làm theo lời khuyên của bạn và Ishmaeels. – Abgan