Nhận biết các thông số máy tính bằng VBA?

Thảo luận trong 'Ứng dụng Excel' bắt đầu bởi Bình_OverAC, 13 Tháng mười hai 2005.

4,933 lượt xem

  1. Bình_OverAC

    Bình_OverAC Over Abnormal / Crazy

    Bài viết:
    845
    Đã được thích:
    7
    Nơi ở:
    Nha Trang
    Em đang định làm một chương trình dùng chung cho nhiều người dùng thông qua mạng nội bộ. Nhưng hầu hết người dùng đều không muốn nhập username và password, bản thân em cũng không muốn cho họ (nhừng người dùng) biết là mình bị hạn chế quyền sử dụng đối với file này bằng một số thủ tục che dấu bớt các sheet không cho họ biết.
    Một ý tưởng em nghĩ tới là đọc tên của họ (account log in vào windows) rồi phân quyền lúc khởi động file. Như vậy sẽ không ai biết là họ bị hạn chế gì!
    Ngoài ra em cũng muốn đọc những thông số khác của máy thì mình làm thế nào nhỉ? Mong các bác chỉ giúp.
    Chân thành cảm tạ :biggrin:
    NguyênBình
     
    #1
  2. hai2hai

    hai2hai VNUNI Makes a difference

    Bài viết:
    2,012
    Đã được thích:
    128
    Nơi ở:
    Hà nội
    1. Cần dịch yêu cầu đó ra tiếng Anh (Ví dụ: "không muốn nhập username và password" --> Dùng account của HĐH Windows ==> "Domain Account"; "đọc những thông số khác của máy" --> "Hardisk Seri*l Number, Network Controller MAC Address, BIOS Info, Mainboard info", v.v...)

    2. Google (Chú ý chữ "Sourcode" & "Visual Basic")

    Thử đi Bình nhé. Đó là cách tìm hiểu 1 vấn đề nhanh nhất.

    Quan trọng nhất là hiểu yêu cầu để dịch ra tiếng anh, thứ 2 thì đơn giản hơn: biết vài chiêu trên internet để kiếm sourcecode

    Hope this helps!
     
    #2
  3. Bình_OverAC

    Bình_OverAC Over Abnormal / Crazy

    Bài viết:
    845
    Đã được thích:
    7
    Nơi ở:
    Nha Trang
    Hic! em lười nên mới hỏi ở đây xem có bác nào biết rồi thì chỉ giúp ấy mà. Thế này thì không lười được rồi!

    Cám ơn anh Hai2hai!
    Khi nào tìm được gì đó em sẽ post lên đây để mọi người tham khảo
     
    #3
  4. Đào Việt Cường

    Đào Việt Cường Moderator

    Bài viết:
    400
    Đã được thích:
    3
    Giới tính:
    Nam
    Nơi ở:
    Khánh Hòa
    Dear Nguyên Bình,
    -----------------
    Mình có cái này không biết, bạn biết chưa: SaveSetting & GetSetting. Toàn bộ thông số bạn có thể lưu trên một sheet, bạn có thế SaveSetting các thông số này vào registry, và có thể đọc các thông số đã save bằng GetSetting,
     
    #4
  5. hai2hai

    hai2hai VNUNI Makes a difference

    Bài viết:
    2,012
    Đã được thích:
    128
    Nơi ở:
    Hà nội
    À, có 2 cách hiểu về yêu cầu này:

    1. Không cần form login --> người nào login vào domain thì dùng ngay account đó để phân quyền. Cách này khá phức tạp với newbie và chắc ý của Bình trong requirement đưa ra không phải ý này.

    2. Có form login, với Username + Pws + Lựa chọn Save Password --> Lần sau vào chương trình thì không cần đăng nhập nữa :).

    Để thực hiện được trường hợp 2 thì thiết nghĩ quá dễ rồi. SaveSetting & GetSetting là 2 lệnh chuẩn của VB cũng như VBA để làm việc với Registry nhưng nếu làm việc với Registry mà chỉ dùng 2 lệnh trên thôi thì vẫn còn hạn chế. Nếu làm việc với Registry 1 cách pro hơn, hãy dùng vài lệnh APIs. Google "Registry.Cls" or "Registry.bas" for more detail.

    Tuy nhiên, không nên cái gì cũng nhét vào registry vì nếu chúng ta cứ add vô đó thì càng ngày registry càng phình to ra. Mà mọi người biết rồi đấy, khi khởi động windows, nó có đọc registry không? Tại sao khi các ứng dụng cài ngày càng nhiều thì máy chạy ngày càng chậm??? Vì thế đừng lạm dụng Registry nhiều quá nhé. Nhất là cứ ghi bừa vào registry rồi xóa file, ứng dụng đi thì nghiễm nhiên những phần ghi vào Registry đó trở thành rác của hệ thống (Và lại mất công chạy các công cụ kiểu như Registry Clearing tools.)

    Vì thế, flat files là giải pháp thay thế hợp lý (INI, DAT, TXT,...) và hiện nay XML đang là sự lựa chọn số 1 (Chuẩn Internet, Support Unicode, Có cấu trúc, v.v...).
     
    Last edited: 2 Tháng ba 2006
    #5
  6. Đào Việt Cường

    Đào Việt Cường Moderator

    Bài viết:
    400
    Đã được thích:
    3
    Giới tính:
    Nam
    Nơi ở:
    Khánh Hòa
    Dear hai2hai,
    -------------
    Hì em biết rồi mà, em cũng chỉ đút vào đấy những cái gì thực sự cần thiết thôi. Nếu em nói câu 1, bác nói câu 2, Nguyên Bình nói câu 3, mem WKT nói câu 4... và cứ thế... mọi người nói câu của mọi người thì vấn để càng được mở rộng ra.
    Cũng giống Nguyên Bình, em cũng (hì!!! hì!!!!) lười đọc sách lắm! Chỉ thích "chỉ tận tay ray tận trán" thôi! Tiện đây em hỏi bác cái này:
    Làm việc với VBA, lần đầu tiên ta phải thiết lập Level Security là Low để không phải xuất hiện "Cảnh báo Macro" (nôm na là vậy). Em muốn thay đổi thông số này trong Registry thì dùng hàm nào. Có mấy dòng thôi mà, bác viết cho em và mọi người đi!
     
    #6
  7. hai2hai

    hai2hai VNUNI Makes a difference

    Bài viết:
    2,012
    Đã được thích:
    128
    Nơi ở:
    Hà nội
    Tham khảo TuanKTCDCN nhé :), Bộ cài A-Excel ở đường Link chữ ký dưới đây đã tự động đặt Security Level = Low luôn rồi đấy.

    Có rất nhiều cách để khám phá việc này.

    1. Search registry (Tốt nhất là biết đoạn Registry của MS Excel nó nằm ở đâu để tìm cho nhanh)

    2. Dùng RegMon.exe (Registry Monitor Tool --> Công cụ theo dõi được mọi actions truy cập vào registry - có thể theo dõi từng ứng dụng).

    Sorry, anh đang bận chút lên không thể làm hộ em việc này được. Em có thể call Tuân để copy đoạn reg đó nhé. Với lại style của anh là ... chỉ cách làm hơn là cung cấp cái cụ thể :)
     
    Last edited: 14 Tháng mười hai 2005
    #7
  8. Bình_OverAC

    Bình_OverAC Over Abnormal / Crazy

    Bài viết:
    845
    Đã được thích:
    7
    Nơi ở:
    Nha Trang
    anh Hai2hai khổ một nổi đây chính là ý của em. Vậy mình có cách nào xử vụ này cho hiệu quả không anh
     
    #8
  9. hai2hai

    hai2hai VNUNI Makes a difference

    Bài viết:
    2,012
    Đã được thích:
    128
    Nơi ở:
    Hà nội
    I. UserManagement module
    1. Get list of groups/accounts exist in domain.
    2. Setup system permissions
    3. Assign permissions

    II. System startup procedures
    1. Get current account info (username, pws)
    2. Lookup permissions for this account
    3. Process loging on using account info w/ his/her permissions

    That's it.

    Còn làm như thế nào, đó lại là vấn đề lập trình mất rồi. Search "Active Directory", "NT Domain Account", v.v...
     
    #9
  10. Bình_OverAC

    Bình_OverAC Over Abnormal / Crazy

    Bài viết:
    845
    Đã được thích:
    7
    Nơi ở:
    Nha Trang
    Ơ re ka, Ơ re ka

    Báo cáo bác hai2hai em đã tìm ra cái đó là gì rồi.

    Đơn giản chỉ là Application.Username --> chán thế đơn giản thể này mà em lại tìm lung tung
     
    #10
  11. Van_VKT

    Van_VKT Thành viên sơ cấp

    Bài viết:
    8
    Đã được thích:
    0
    Nơi ở:
    Sai Gon
    Excel lấy được tất cả thông số của máy tính, kể cả username, domain login, số của mainboard, số hiệu CPU.v.v... Nói chung là lấy được tuốt tuồn tuột. Nếu để đảm bảo an toàn, bạn phải kiểm tra username và domain logon. Nếu kẻ gian biết được bạn không kiểm tra domain logon, hắn sẽ tạo một username trên máy cá nhân có tên trùng với username của bạn để tha hồ mà xem file đó có gì.

    Mình có code để lấy các thông số đó nhưng chưa biết post lên đây như thế nào. Nếu bạn còn muốn dùng thì email cho mình, mình sẽ gởi cho.
     
    #11
  12. Bình_OverAC

    Bình_OverAC Over Abnormal / Crazy

    Bài viết:
    845
    Đã được thích:
    7
    Nơi ở:
    Nha Trang
    Cảm ơn bác nhiều. Bác có thể gởi cho em, em sẽ giúp bác đưa lên đây cho mọi người cùng tham khảo.
    email: donguyenbinh@gmail.com
     
    #12
  13. Van_VKT

    Van_VKT Thành viên sơ cấp

    Bài viết:
    8
    Đã được thích:
    0
    Nơi ở:
    Sai Gon

    Mình đã gởi code cho Bình rồi, Bình có nhận được chưa hay có vấn đề gì trục trặc trong code đó ko mà sao ko thấy Bình Upload?
     
    #13

Chia sẻ trang này