Làm để File XYZ chạy được ở Máy tính A hoặc B , nhưng không cho chạy ở Máy tính khác!
Em chào Thầy cô & anh Chị!
Ở cty em có nhiều máy tính, bây giờ em muốn File "XYZ" chạy được ở máy tính A hoặc Máy tính B, ngòai 2 máy tính này thì sẽ không cho chạy bấy kỳ ở máy tính khác (Mục đích không cho copy File "XYZ" tràn lan ở các máy tính khác)
———–
Em có sưu tầm code đọc Serial HDDFunction doc_ma_dia() Dim ObjetoWMI As Object Dim Disco As Object Dim Discos As Object Dim abc Set ObjetoWMI = GetObject("WINMGMTS:") Set Discos = ObjetoWMI.InstancesOf("Win32_PhysicalMedia") abc = "" For Each Disco In Discos abc = Disco.SerialNumber If Len(Trim(abc)) > 0 Then Exit For End If Next doc_ma_dia = Trim(abc) End Functiongiả sử em có Serial HDD:
Của Máy A là : S01JJ40Y233766
Của Máy B là : K12PAK5G
———-
Bây giờ em muốn dùng Sub Auto_Open() để kiểm tra Serial HDD của hai máy tính nói trên, nếu đúng thì tiếp tục, nếu sai thì thóat File. Nhờ Thầy cô & anh chị viết giúp code
—————
Em cũng biết vấn đề bảo mật của Excel là hạn chế, nhưng vấn đề trên cũng để hạn chế copy File ra tùm lum rồi không biết cái nào là bản chính, cái nào là phụ!
Em cảm ơn!
Lúc trước mình cũng làm cái này rồi. Chỉ cần check tên đường dẫn nếu đúng username thì cho mở, không thì thoát. Không cần tới serial của ổ đĩa gì cả.
Thì cứ viết bình thường thôi… Tôi không nghĩ là bạn không làm được
ví dụ:
Sub Auto_Open()
Dim sSeri As String
sSeri = doc_ma_dia
If sSeri <> "S01JJ40Y233766" And sSeri <> "K12PAK5G" Then ThisWorkbook.Close False
End Sub
Đại khái vậy
www.giaiphapexcel.com/diendan/threads/l%C3%A0m-%C4%91%E1%BB%83-file-xyz-ch%E1%BA%A1y-%C4%91%C6%B0%E1%BB%A3c-%E1%BB%9F-m%C3%A1y-t%C3%ADnh-a-ho%E1%BA%B7c-b-nh%C6%B0ng-kh%C3%B4ng-cho-ch%E1%BA%A1y-%E1%BB%9F-m%C3%A1y-t%C3%ADnh-kh%C3%A1c.77347/post-475805
Khóa học Power PI – Ứng dung trong Nhân sự
TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...
Xem khóa học
Dùng And là đúng rồi
If sSeri <> "S01JJ40Y233766" And sSeri <> "K12PAK5G" Then nghĩa là nếu sSeri cùng khác cả 2 chuổi mà bạn cho thì mới thoát, ngược lại, chỉ cần đúng 1 trong 2 chuổi sẽ không có chuyện gì xảy ra
Nếu dùng OR thì phải viết thế này:
If Not (sSeri = "S01JJ40Y233766" Or sSeri = "K12PAK5G") Then
cho mình hỏi bạn Hồng.Vân , trên đây là trường hợp bạn dùng cho 2 máy A và B, bây giờ muốn mở rông lên dùng cho cả 1 phòng 50 CPU ( muốn cho file không ra khỏi phòng ) —> bạn sẽ đi từng máy tính để lấy Seri hay là dùng code VBA ?!$@!!-+*/
Hix kthức của mình còn hạn chế lắm , nếu không muốn nói là "gà"–> ^^ làm sao mình " hỏi đố? " như bạn nói được**~**
Vì chỉ có 2 cho nên ta mới làm như vậy. Nếu nhiều máy thì đặt một chuỗi const:
private Const MAYCOQUYEN = "|mayA|mayB|mayC|…"
rồi dò sê ri dĩa trong đó.
Cỡ 50 máy thì phải dùng network. Code gởi id của máy lên server hỏi thăm.
Thử code này xem, mình vẫn hay dùng code này –> chưa kiểm tra trên 64bits
Seri của mỗi máy là duy nhất, do đó bạn phải xem seri của máy mình là bn –> thay vào chỗ bôi đỏ :
If sSeri <> "S01JJ40Y233766" And sSeri <> "K12PAK5G" Then ThisWorkbook.Close False
cụ thể hơn bạn phải copy cả đoạn code sau đây mới chuẩn :
Cho hỏi seri máy tính bạn đang dùng có thông tin như thế nào ?
bạn đâu có add code ở các bài trên vào file đâu!!!
Thử lại với file này!
Theo em nghĩ, việc phân quyền file này chạy được ở máy này nhưng không chạy được ở máy kia là nhu cầu cần thiết. NHƯNG nếu logic để kiểm tra xem máy có đó có được đọc file được hay không lại nằm chính trong file đó thì việc làm này mang ít ý nghĩa và mất thời gian, tuy nhiên cho mục đích làm cho biết, học hỏi thì OK, còn trong thực tế thì không có tác dụng gì nhiều. Có đọc qua thì thấy code check series của ổ cứng và 1 số code nữa sử dụng win api. Chắc mọi người cũng biết, bản excel dành cho Mac OS cũng hỗ trợ VBA, nếu dùng win api thì chắc chắn sẽ không hoạt động, bởi vì win api chỉ hoạt động trên windows.
Và việc như chị chủ topic nói " hạn chế copy File ra tùm lum rồi không biết cái nào là bản chính, cái nào là phụ ". Vấn đề nằm ở chỗ quản lý file, ai được nhận file, ai được nhìn thấy file, ai có quyền truy cập file … Nếu vấn đề như thế này mà người đi làm phải tự giải quyết với nhau thì em xin được phép hỏi là không biết công ty chị có bộ phận IT ko :p, công ty có sử dụng Active Directory hay SharePoint ko .
Bạn thay Seri = cách nào? có dùng hàm ở dưới kg?
And sSeri <> "K12PAK5G"
Xóa cái khúc này đi. Bạn đọc thì phải đọc từ đầu tới cuối chứ
Cái màu đo đỏ bỏ vào module
Mình nghĩ thì có khi bạn lấy seri HDD bị sai rồi, chứ code thì bình thường mà
Thôi thì dùng thủ cách khác
[URL='https://www.giaiphapexcel.com/forum/showthread.php?99550-Kh%C3%B4ng-bi%E1%BA%BFt-c%C3%B3-h%C3%A0m-n%C3%A0o-tr%E1%BA%A3-v%E1%BB%81-t%C3%AAn-m%C3%A1y-t%C3%ADnh-hay-t%C3%AAn-ng%C6%B0%E1%BB%9Di-d%C3%B9ng']https://www.giaiphapexcel.com/forum/showthread.php?99550-Không-biết-có-hàm-nào-trả-về-tên-máy-tính-hay-tên-người-dùng