<![CDATA[Latest posts for the topic "[Hỏi] Vấn đề về Network Access sử dụng Local System trên C# .NET"]]> /hvaonline/posts/list/23.html JForum - http://www.jforum.net [Hỏi] Vấn đề về Network Access sử dụng Local System trên C# .NET /hvaonline/posts/list/22070.html#131266 /hvaonline/posts/list/22070.html#131266 GMT Re: [Hỏi] Vấn đề về Network Access sử dụng Local System trên C# .NET /hvaonline/posts/list/22070.html#131612 /hvaonline/posts/list/22070.html#131612 GMT Re: [Hỏi] Vấn đề về Network Access sử dụng Local System trên C# .NET Z0rr0, service của tớ chạy trên XP, tớ dùng C# .NET cho đơn giản và tiện, vì tớ không muốn đi sâu vào tìm hiểu Windows. Còn về cái mapping thì tớ sử dụng function WNetAddConnection2A trong mpr.dll, để map đến 1 drive bất kì, hoặc drive null, nhưng đều không sử dụng được trên Local System. Tớ thì không rành về lập trình Windows nên chỉ sử dụng những cách theo kiểu intuitive thôi. Tớ cũng đã nghĩ đến phương án của bồ, nhưng tớ "chỉ được" sử dụng Local System mà không phải bất cứ một account nào khác, nên cũng không rõ về chuyện session 1, 2, etc. Hiện tại thì tớ đã impersonate được các đoạn code quan trọng, sử dụng function LogonUser để tạo login session đến remote server. Mọi việc nói chung hoạt động tốt, và code khá đơn giản, chỉ có điều hàm LogonUser không trả giá trị chính xác khi connect, ví dụ khi server unreachable thì nó vẫn trả giá true (no errors), vì có lẽ nó không thực sự tạo connection đến remote server. Thực ra thì cũng không phải nghiêm trọng lắm, nhưng trong những trường hợp như thế, thì nhiều function như File.Copy sẽ tốn rất nhiều thời gian để tạo Exception (khoảng 20s gì đó), mà tớ thì không biết làm cách nào để giảm timeout của chúng, dẫn đến việc service tốn rất nhiều thời gian cho 1 queue nào đó. Cám ơn Z0rr0 đã quan tâm. ]]> /hvaonline/posts/list/22070.html#131670 /hvaonline/posts/list/22070.html#131670 GMT Re: [Hỏi] Vấn đề về Network Access sử dụng Local System trên C# .NET /hvaonline/posts/list/22070.html#131837 /hvaonline/posts/list/22070.html#131837 GMT Re: [Hỏi] Vấn đề về Network Access sử dụng Local System trên C# .NET

Z0rr0 wrote:
LogonUser chỉ hoạt động đúng với chính máy đang gọi, ko dùng được cho máy từ xa. Do đó đương nhiên bồ gọi sẽ không thành công, hãy dùng LogonUser để login và có user session từ local, rồi từ session này mà connect đến remote. 
Uhm, không phải là không thành công, mà là trong trường hợp không kết nối được thì nó vẫn báo là được dẫn đến các thi hành thừa sau đó. Còn trong trường hợp server reachable, và user+pass correct thì vẫn kết nối được (e.g., browse files, copy, write). Như tớ đã nói ở bài trước, tớ không thể login vào một user khác do một số giới hạn về security policy trong hệ thống, nên tớ không thể tạo một session.

Z0rr0 wrote:
Tôi cũng ko chắc WNetAddConnection2 bị giới hạn ko được với LocalSystem account, bản thân tôi nghĩ là được khi mà connection này không cần interactive session (vì là remote) thì LocalSystem hoàn toàn có thể được, vả lại tài liệu API này cũng ko đề cập chuyện này. Nên bồ có thể kiểm tra chính xác lỗi trả về ở trường hợp với LocalSystem không? 
Đúng là trong API doc của MS không đề cập đến chuyện này, nhưng trên thực tế nó trả về lỗi "A specified logon session does not exists. It may already have been terminated" cả khi tớ map vào một drive M: bất kì hoặc null drive.

Z0rr0 wrote:
Cũng chưa hiểu vụ Exception 20s của bồ :) 
À, cái này là trong trường hợp mà không thể kết nối đến server thì tớ phải chờ hàm System.IO.File.Copy mất khoảng 20s gì đó nó mới throw exception, do đó giảm đáng kể performance của service. Khoảng thời gian này cũng tương tự nếu sử dụng WNetAddConnection2 để connect đến unreachable server. Thân.]]>
/hvaonline/posts/list/22070.html#131889 /hvaonline/posts/list/22070.html#131889 GMT
Re: [Hỏi] Vấn đề về Network Access sử dụng Local System trên C# .NET /hvaonline/posts/list/22070.html#132530 /hvaonline/posts/list/22070.html#132530 GMT