Tự động nhập User, Pass Lan PC khi mở file trong Lan

Liên hệ QC

dhn46

Hướng tới tương lai
Tham gia
1/3/11
Bài viết
3,252
Được thích
3,868
Các anh/chị cho dhn46 hỏi: khi mở 1 file trong Lan thì bước đầu tiên cần mở thư mục tại máy tính được share, khi PC đó có User, Password cần nhập user password rồi mới tiến hành mở file

Hiện dhn46 đang dùng biện pháp mapping trước sau đó mở file. Vậy xin hỏi các anh chị xem có cách nào khác ngoài phương pháp mapping để log vào PC trên Lan? Nếu có nhờ các anh chị chỉ giáo

Xin cảm ơn!
Dhn46
 
Chỗ này không rõ 'login hay logout hay write log'?
LAN chứ không phải 'Lan'.

Khi kết nối với máy tính khác trong LAN, chỗ yêu cầu nhập User và Password có một dòng ngay dưới đó, check vào thì ghi nhớ và lần sau không phải nhập lại.
 
Upvote 0
Nằm trong Control Panel\User Accounts\Manage your credentials\Windows Credentials
 
Upvote 0
Chỗ này không rõ 'login hay logout hay write log'?
LAN chứ không phải 'Lan'.

Khi kết nối với máy tính khác trong LAN, chỗ yêu cầu nhập User và Password có một dòng ngay dưới đó, check vào thì ghi nhớ và lần sau không phải nhập lại.
Cảm ơn bạn đã trả lời và góp ý.

Dhn46 sẽ khắc phục câu từ chưa chuẩn.

1. Dhn46 đã mô tả rõ thao tác để login vào PC trên LAN. Không biết bạn đang chưa rõ phần nào để dhn46 giải thích rõ hơn để nhận giải pháp từ bạn?

2. Dhn46 viết bài vào box lập trình thì cũng cần giải pháp cho hướng này. Nếu nhập tay và chọn ghi nhớ thì dhn46 đã làm được.
Bài đã được tự động gộp:

Nằm trong Control Panel\User Accounts\Manage your credentials\Windows Credentials
Bạn có thể giải thích kỹ hơn?

Đây là trường hợp không can thiệp setting đang có của Window, chỉ mang file này đi các máy trong mạng nội bộ để mở 1 file được chỉ định.

Các máy trong mạng nội bộ chưa ghi nhớ user pass của máy chứa file.

Cảm ơn bạn.
 
Upvote 0
1. Dhn46 đã mô tả rõ thao tác để login vào PC trên LAN. Không biết bạn đang chưa rõ phần nào để dhn46 giải thích rõ hơn để nhận giải pháp từ bạn?

2. Dhn46 viết bài vào box lập trình thì cũng cần giải pháp cho hướng này. Nếu nhập tay và chọn ghi nhớ thì dhn46 đã làm được.
.
Chắc code mới hay cho trường hợp này, chứ nhập một lần dùng cho mọi kết nối (các files khác, in ấn...) lại không hợp.

Vậy em xin lỗi ạ, xin lỗi vì tội lanh chanh ạ.
 
Upvote 0
Với LAN tốt nhất là Cơ sở Dữ liệu đặt ở Server rồi truy cập, còn kiểu ngang hàng từ PC này sang PC kia thì khó khăn rồi - Vẫn muốn thế thì vẫn nên tắt qua Server
 
Upvote 0
Tôi thuộc loại chậm hiểu nên cứ phải mô tả rõ.
1. Ta có máy A và B cùng mạng LAN. Trên máy B có đặt một tập tin. Anh A muốn mở tập tin trên máy B. Đúng thế?

2. Nếu 1 đúng thì tiếp. Hiện tại bạn "mapping trước" và sau đó dùng CODE VBA mở tập tin và tất cả chạy "ngoan"? Và bây giờ bạn muốn bỏ cái "mapping trước"? Nếu đúng thế thì ... tôi bó tay. Bó tay vì chưa bao giờ tôi có mạng LAN và nghịch mạng LAN. Nhưng tôi thấy đối tượng Network có phương thức có vẻ hứa hẹn nhiều điều.

Cụ thể bạn thử code sau. Tôi nói trước là tôi chưa bao giờ có dịp kiểm nghiệm. Chỉ là đoán mò thôi
Mã:
Sub test()
Dim netObj As Object
    netObj = CreateObject("WScript.Network")
    netObj.MapNetworkDrive "G:", "\\myServer\myFolder", True, "username", "password"
End Sub
 
Upvote 0
Hôm Mạnh có coi link sau nó nói như vầy mà bận quá chưa test được bạn nào rảnh làm thử xem sao

Truy cập vào máy khác mà không cần share thư mục

https://lag.vn/tin/Cong-Nghe/5-thu-thuat-nho-co-the-ban-chua-biet-voi-Windows-10.html
Dhn46 cảm ơn bạn hồi đáp. Dhn46 sẽ thử theo hướng này và phản hồi bạn. Giờ không ngồi máy tính để thử ngay được ^^
---------------------------------------------------------------------
Update: cách này sử dụng khi đã login, nếu chưa login thì không được

Bài đã được tự động gộp:

Tôi thuộc loại chậm hiểu nên cứ phải mô tả rõ.
1. Ta có máy A và B cùng mạng LAN. Trên máy B có đặt một tập tin. Anh A muốn mở tập tin trên máy B. Đúng thế?

2. Nếu 1 đúng thì tiếp. Hiện tại bạn "mapping trước" và sau đó dùng CODE VBA mở tập tin và tất cả chạy "ngoan"? Và bây giờ bạn muốn bỏ cái "mapping trước"? Nếu đúng thế thì ... tôi bó tay. Bó tay vì chưa bao giờ tôi có mạng LAN và nghịch mạng LAN. Nhưng tôi thấy đối tượng Network có phương thức có vẻ hứa hẹn nhiều điều.

Cụ thể bạn thử code sau. Tôi nói trước là tôi chưa bao giờ có dịp kiểm nghiệm. Chỉ là đoán mò thôi
Mã:
Sub test()
Dim netObj As Object
    netObj = CreateObject("WScript.Network")
    netObj.MapNetworkDrive "G:", "\\myServer\myFolder", True, "username", "password"
End Sub
Dhn46 cảm ơn bác.
Cách mapping này dhn46 đang sử dụng.
Dhn46 thấy khi login vào 1 địa chỉ LAN nào đó bằng cách trực tiếp được \\server (không cần myFolder) trong khi mapping thì cần Folder. Mapping sẽ tạo 1 Driver trong my computer, disconect khi không dùng thì mới mất trong khi login trực tiếp không vướng víu vụ này

Đó là thắc mắc cách làm khác mapping mà dhn46 hỏi tại #1.
Bài đã được tự động gộp:

.
Chắc code mới hay cho trường hợp này, chứ nhập một lần dùng cho mọi kết nối (các files khác, in ấn...) lại không hợp.

Vậy em xin lỗi ạ, xin lỗi vì tội lanh chanh ạ.
Cảm ơn bạn rất nhiều đã đọc và trả lời.

Nếu bạn có giải pháp thì mong nghe tư vấn của bạn

Chúc bạn sức khoẻ (^.^)
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi thuộc loại chậm hiểu nên cứ phải mô tả rõ.
1. Ta có máy A và B cùng mạng LAN. Trên máy B có đặt một tập tin. Anh A muốn mở tập tin trên máy B. Đúng thế?

2. Nếu 1 đúng thì tiếp. Hiện tại bạn "mapping trước" và sau đó dùng CODE VBA mở tập tin và tất cả chạy "ngoan"? Và bây giờ bạn muốn bỏ cái "mapping trước"? Nếu đúng thế thì ... tôi bó tay. Bó tay vì chưa bao giờ tôi có mạng LAN và nghịch mạng LAN. Nhưng tôi thấy đối tượng Network có phương thức có vẻ hứa hẹn nhiều điều.

Cụ thể bạn thử code sau. Tôi nói trước là tôi chưa bao giờ có dịp kiểm nghiệm. Chỉ là đoán mò thôi
Mã:
Sub test()
Dim netObj As Object
    netObj = CreateObject("WScript.Network")
    netObj.MapNetworkDrive "G:", "\\myServer\myFolder", True, "username", "password"
End Sub
Anh cho em hoi chút xíu nhé, về mạng là em mù tịt.

Mình có thể dùng cách này kết nối với File trong thư mục qua Intenet không anh
 
Upvote 0
Xin cảm ơn các bạn đã trợ giúp dhn46. Hiện dhn46 đang sử dụng giải pháp Net use và ghi phản hồi vào clipboard, sau đó dùng FileSystemObject để kiểm tra sự tồn tại của thư mục share. Sau 1 thời gian thử nghiệm dhn46 thấy tốc độ nhanh hơn biện pháp mapping.

'Kiểm tra máy đã Login vào share folder với User, Password được cung cấp sẵn
Mã:
Function CheckConn(ByVal LogPC As String, ByVal strPwd As String, ByVal strUser As String) As Boolean
On Error Resume Next
Dim Fso As Object, objClb As Object
Dim ResponseText As String
Dim tmpFile As Variant
Set Fso = CreateObject("Scripting.FileSystemObject")
Set objClb = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
objClb.Clear
With Fso
    tmpFile = .GetTempName
    sComm = "net use " & LogPC & "\IPC$ " & """" & strPwd & """" & " /user:" & """" & strUser & """ |clip"
    CreateObject("Wscript.Shell").Run "cmd /u /c " & sComm, 0, True
    objClb.GetFromClipboard
    ResponseText = objClb.GetText
        If InStr(1, ResponseText, "completed") Then
            CheckConn = True
        Else
            CheckConn = False
        End If
    .Close
    End With
End With
Set Fso = Nothing
End Function
[\code]
'Kiểm tra sự tồn tại của thư mục
[code]
Function CheckFolder(sPath As String) As Boolean
Dim Fso As Object
Set Fso = CreateObject("Scripting.FileSystemObject")
    If Fso.FolderExists(sPath) Then
        CheckFolder = True
    Else
        CheckFolder = False
    End If
Set Fso = Nothing
End Function
 
Upvote 0
Xin cảm ơn các bạn đã trợ giúp dhn46. Hiện dhn46 đang sử dụng giải pháp Net use và ghi phản hồi vào clipboard, sau đó dùng FileSystemObject để kiểm tra sự tồn tại của thư mục share. Sau 1 thời gian thử nghiệm dhn46 thấy tốc độ nhanh hơn biện pháp mapping.

'Kiểm tra máy đã Login vào share folder với User, Password được cung cấp sẵn
Mã:
Function CheckConn(ByVal LogPC As String, ByVal strPwd As String, ByVal strUser As String) As Boolean
On Error Resume Next
Dim Fso As Object, objClb As Object
Dim ResponseText As String
Dim tmpFile As Variant
Set Fso = CreateObject("Scripting.FileSystemObject")
Set objClb = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
objClb.Clear
With Fso
    tmpFile = .GetTempName
    sComm = "net use " & LogPC & "\IPC$ " & """" & strPwd & """" & " /user:" & """" & strUser & """ |clip"
    CreateObject("Wscript.Shell").Run "cmd /u /c " & sComm, 0, True
    objClb.GetFromClipboard
    ResponseText = objClb.GetText
        If InStr(1, ResponseText, "completed") Then
            CheckConn = True
        Else
            CheckConn = False
        End If
    .Close
    End With
End With
Set Fso = Nothing
End Function
[\code]
'Kiểm tra sự tồn tại của thư mục
[code]
Function CheckFolder(sPath As String) As Boolean
Dim Fso As Object
Set Fso = CreateObject("Scripting.FileSystemObject")
    If Fso.FolderExists(sPath) Then
        CheckFolder = True
    Else
        CheckFolder = False
    End If
Set Fso = Nothing
End Function
Hình như code đó nó sai cái gì ấy ...
mạnh làm vầy thấy báo OK nè
Run cmd
Net use \\192.168.1.5\ipc$ "023166" /user:"administrator"

023166 Là Pass
Log LAN IP.PNG
 
Lần chỉnh sửa cuối:
Upvote 0
Cũng chưa thật hiểu ý bạn muốn trao đổi, dhn46 test trên gần 100 máy hiện tại chưa gặp vấn đề gì.

Bạn có thể nêu rõ được không?
mạnh mới thử khai báo vầy bạn coi có đúng ko nhé xong Mạnh test lại cái nữa xem sao
Mã:
Sub Main()
    Dim Chk As Boolean
    Dim PcLog As String
    Dim Pass As String
    Dim User As String
    PcLog = "\\192.168.1.5"
    Pass = "023166"
    User = "KieuManh"
    Chk = CheckConn(PcLog, Pass, User)
    If Chk = True Then
        MsgBox "Yes"
    Else
        MsgBox "No"
    End If
End Sub
 
Upvote 0
mạnh mới thử khai báo vầy bạn coi có đúng ko nhé xong Mạnh test lại cái nữa xem sao
Mã:
Sub Main()
    Dim Chk As Boolean
    Dim PcLog As String
    Dim Pass As String
    Dim User As String
    PcLog = "\\192.168.1.5"
    Pass = "023166"
    User = "KieuManh"
    Chk = CheckConn(PcLog, Pass, User)
    If Chk = True Then
        MsgBox "Yes"
    Else
        MsgBox "No"
    End If
End Sub

Đã hiểu ý bạn Kiều Mạnh, cái vấn đề ở strPwd là dạng số, cái này chắc xử lý 1 chút là được phải không bạn. Còn trường hợp strUser dạng số nữa. Do chỗ dhn46 quy định phải đặt pass có cái chuỗi, số, ký tự nên chưa lường được trường hợp này. Còn user dạng số nhờ bạn xem có bị lỗi không? Nếu lỗi sẽ bắt lỗi cho trường hợp này.
Mã:
Function CheckConn(ByVal LogPC As String, ByVal strPwd As String, ByVal strUser As String) As Boolean
On Error Resume Next
Dim Fso As Object, objClb As Object
Dim ResponseText As String
Dim tmpFile As Variant
Set objClb = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
objClb.Clear
    If Val(strPwd) Then
        sComm = "net use " & LogPC & "\IPC$ " & strPwd & " /user:" & """" & strUser & """ |clip"
    Else
        sComm = "net use " & LogPC & "\IPC$ " & """" & strPwd & """" & " /user:" & """" & strUser & """ |clip"
    End If
    CreateObject("Wscript.Shell").Run "cmd /u /c " & sComm, 0, True
    objClb.GetFromClipboard
    ResponseText = objClb.GetText
        If InStr(1, ResponseText, "completed") Then
            CheckConn = True
        Else
            CheckConn = False
        End If
Set Fso = Nothing
Set objClb = Nothing
End Function
 
Upvote 0
Đã hiểu ý bạn Kiều Mạnh, cái vấn đề ở strPwd là dạng số, cái này chắc xử lý 1 chút là được phải không bạn. Còn trường hợp strUser dạng số nữa. Do chỗ dhn46 quy định phải đặt pass có cái chuỗi, số, ký tự nên chưa lường được trường hợp này. Còn user dạng số nhờ bạn xem có bị lỗi không? Nếu lỗi sẽ bắt lỗi cho trường hợp này.
Mã:
Function CheckConn(ByVal LogPC As String, ByVal strPwd As String, ByVal strUser As String) As Boolean
On Error Resume Next
Dim Fso As Object, objClb As Object
Dim ResponseText As String
Dim tmpFile As Variant
Set objClb = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
objClb.Clear
    If Val(strPwd) Then
        sComm = "net use " & LogPC & "\IPC$ " & strPwd & " /user:" & """" & strUser & """ |clip"
    Else
        sComm = "net use " & LogPC & "\IPC$ " & """" & strPwd & """" & " /user:" & """" & strUser & """ |clip"
    End If
    CreateObject("Wscript.Shell").Run "cmd /u /c " & sComm, 0, True
    objClb.GetFromClipboard
    ResponseText = objClb.GetText
        If InStr(1, ResponseText, "completed") Then
            CheckConn = True
        Else
            CheckConn = False
        End If
Set Fso = Nothing
Set objClb = Nothing
End Function
Xin chào các bạn,
Theo OT biết hàm "CheckConn" sử dụng tên đăng nhập và mật khẩu đăng nhập dùng để đăng nhập vào một máy tính trong cùng một hệ thống mạng.
Vậy có có thể sử dụng vba để ngắt kết nối (log out) ra khỏi tên đăng nhập sau khi thông qua hàm CheckConn không?
OT đã thử code sau nhưng không logout được, mà phải khởi động lại windows thì mới logout được:
Mã:
Sub DisConn()
Dim sCmd As String
    sCmd = "net use * /delete"
    CreateObject("Wscript.Shell").Run "cmd /u /c " & sCmd, 0, True
End Sub
Nhờ các bạn chỉ giúp.
 
Upvote 0
Web KT
Back
Top Bottom