Chỉnh sữa 1 giá trị trong registry (2 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

nhatkhong

Thành viên mới
Tham gia
7/10/17
Bài viết
10
Được thích
0
Chào các ace! E có 1 vấn đề là: muốn mỗi lần chạy file excel có chứa Macro thì Excel sẽ không hiện lên bảng cảnh báo Enable Macro nữa bằng cách chỉnh trong Option của Excel tùy chọn "Enable all macro" thì excel sẽ không hỏi nữa. Nhưng e muốn là khi chạy file excel lên nó sẽ tự chỉnh option này của excel thành Enable all macro để cho file excel chứa macro của e chạy luôn vì có những file excel không chạy macro hay người ta không chọn Enable Macro lên thì cũng như công cóc.
Cụ thể e có đoạn code sau:
Private Sub Workbook_Open()
If Date >= DateSerial(2018, 01,30) Then
MsgBox "Het han su dung"
Thisworkbook.Close False '<-----
End If
End Sub
'trước khi chạy đoạn code này e muốn bật tính năng "Enable all macro" trong excel bằng cách thêm vào registry từ khóa sau:(cái này e làm trên office 2010, còn những office 2007 hoặc 2013 thì các ace giúp e luôn nhé)
Registry Key to change:
[HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security]
"VBAWarnings"=dword:00000001
Registry Option Values:
•1 = Enable all macros (not recommended; potentially dangerous code can run)
•2 = Disable all macros except digitally signed macros
•3 = Disable all macros with notification
•4 = Disable all macros without notification
để cho nó bật tính năng "Enable all macro" của Excel lên luôn khỏi phải hỏi người dùng kêu họ bật Enable security lên nữa.
Em xin cám ơn ạ!
 
Chào các ace! E có 1 vấn đề là: muốn mỗi lần chạy file excel có chứa Macro thì Excel sẽ không hiện lên bảng cảnh báo Enable Macro nữa bằng cách chỉnh trong Option của Excel tùy chọn "Enable all macro" thì excel sẽ không hỏi nữa. Nhưng e muốn là khi chạy file excel lên nó sẽ tự chỉnh option này của excel thành Enable all macro để cho file excel chứa macro của e chạy luôn vì có những file excel không chạy macro hay người ta không chọn Enable Macro lên thì cũng như công cóc.
Cụ thể e có đoạn code sau:
Private Sub Workbook_Open()
If Date >= DateSerial(2018, 01,30) Then
MsgBox "Het han su dung"
Thisworkbook.Close False '<-----
End If
End Sub
'trước khi chạy đoạn code này e muốn bật tính năng "Enable all macro" trong excel bằng cách thêm vào registry từ khóa sau:(cái này e làm trên office 2010, còn những office 2007 hoặc 2013 thì các ace giúp e luôn nhé)
Registry Key to change:
[HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security]
"VBAWarnings"=dword:00000001
Registry Option Values:
•1 = Enable all macros (not recommended; potentially dangerous code can run)
•2 = Disable all macros except digitally signed macros
•3 = Disable all macros with notification
•4 = Disable all macros without notification
để cho nó bật tính năng "Enable all macro" của Excel lên luôn khỏi phải hỏi người dùng kêu họ bật Enable security lên nữa.
Em xin cám ơn ạ!
Không có chuyện vô lý vậy đâu! Bởi khi Excel đã thiết lập Disable Macro thì không có code nào chạy được ---> Suy ra là dù có viết code nào cũng vô nghĩa
Muốn code thì ít nhất code đó phải chạy trong môi trường khác Excel: VB6 chẳng hạn
 
Upvote 0
E có tìm và thử 1 đoạn code của a bạn bên http://vba-corner.livejournal.com/3054.html
nó ra iuput box để lấy giá trị e nhập cái key của e muốn và thay giá trị của cái key này thì cái tùy chọn trong excel sẽ bị thay đổi theo cái key e thay đổi trong Regitry luôn ạ. E cho cái sub vào trong này để test thì thấy nó đọc ghi giá trị ok hết ạ. Và tùy chọn Enable all Macro trong excel cũng thay đổi luôn ạ.
Private Sub Workbook_Open()
TestRegistry
End Sub
A xem qua thử có cải tiến gì giúp e cho nhu cầu của e không ạ.
 
Upvote 0
I
A xem qua thử có cải tiến gì giúp e cho nhu cầu của e không ạ.
Không cần test cũng biết là không được
Không bàn về chuyện code đúng hay sai. Vấn đề ở đây là: Một máy tính đang thiết lập Disable macro thì sẽ không có code nào chạy được cả.
Hình như bạn chưa thấy sự nghịch lý trong câu hỏi của mình thì phải?
 
Upvote 0
E có tìm và thử 1 đoạn code của a bạn bên http://vba-corner.livejournal.com/3054.html
nó ra iuput box để lấy giá trị e nhập cái key của e muốn và thay giá trị của cái key này thì cái tùy chọn trong excel sẽ bị thay đổi theo cái key e thay đổi trong Regitry luôn ạ. E cho cái sub vào trong này để test thì thấy nó đọc ghi giá trị ok hết ạ. Và tùy chọn Enable all Macro trong excel cũng thay đổi luôn ạ.
Private Sub Workbook_Open()
TestRegistry
End Sub
A xem qua thử có cải tiến gì giúp e cho nhu cầu của e không ạ.
Code đó dài cả mét .... code trên GPE ngắn gọn hay hơn chịu khó tìm là thấy :D
 
Upvote 0
Lần chỉnh sửa cuối:
Upvote 0
Chào các ace! E có 1 vấn đề là: muốn mỗi lần chạy file excel có chứa Macro thì Excel sẽ không hiện lên bảng cảnh báo Enable Macro nữa bằng cách chỉnh trong Option của Excel tùy chọn "Enable all macro" thì excel sẽ không hỏi nữa. Nhưng e muốn là khi chạy file excel lên nó sẽ tự chỉnh option này của excel thành Enable all macro để cho file excel chứa macro của e chạy luôn vì có những file excel không chạy macro hay người ta không chọn Enable Macro lên thì cũng như công cóc.
Cụ thể e có đoạn code sau:
[code ra sao khong quan trọng]

để cho nó bật tính năng "Enable all macro" của Excel lên luôn khỏi phải hỏi người dùng kêu họ bật Enable security lên nữa.
Em xin cám ơn ạ!

Cái phần tôi tô xanh là bức rào an toàn mà Microsoft đặt ra để chống phá phách. Nó không hữu hiệu 100% nhưng có cũng còn hơn không.

Cái bạn muốn, diễn nôm na ra là khả năng tự động vượt bức rào an toàn của Office.
Chẳng những vậy, phương pháp của bạn không chỉ tạo cơ hội cho riêng file của bạn mà còn mở của luôn cho các files của ngừoi khác.

Theo định nghĩa, cách làm của bạn có thể coi như thả vi rút phá máy ngừoi ta.

Tôi không nói cách này có khả thi. Tôi chỉ nói về hậu quả của nó.
 
Upvote 0
trong thiết lập về macro trong excel có 4 tùy chọn :
•1 = Enable all macros (not recommended; potentially dangerous code can run)
•2 = Disable all macros except digitally signed macros
•3 = Disable all macros with notification
•4 = Disable all macros without notification
Nếu như thiết lập ở tùy chọn số 4=Disable all macros without notification thì sẽ không có code nào chạy được hết nhưng nếu để ở thiết lập mặc định của excel là 3 = Disable all macros with notification thì e thấy nó vẫn chạy cái code như e nói ở trên bình thường ạ. E đã test thử
I

Không cần test cũng biết là không được
Không bàn về chuyện code đúng hay sai. Vấn đề ở đây là: Một máy tính đang thiết lập Disable macro thì sẽ không có code nào chạy được cả.
Hình như bạn chưa thấy sự nghịch lý trong câu hỏi của mình thì phải?
A nói đúng với trường hợp excel đang để ở tùy chọn là "Disable all macros without notification" thì sẽ không có code nào chạy được hết. Nhưng nếu đang ở tùy chọn "Disable all macros with notification" thì e để cái sub "TestRegistry()" trong work book.Open thì nó vẫn chạy bình thường ạ. Cám ơn a đã chia sẽ.
 
Upvote 0
Cái phần tôi tô xanh là bức rào an toàn mà Microsoft đặt ra để chống phá phách. Nó không hữu hiệu 100% nhưng có cũng còn hơn không.

Cái bạn muốn, diễn nôm na ra là khả năng tự động vượt bức rào an toàn của Office.
Chẳng những vậy, phương pháp của bạn không chỉ tạo cơ hội cho riêng file của bạn mà còn mở của luôn cho các files của ngừoi khác.

Theo định nghĩa, cách làm của bạn có thể coi như thả vi rút phá máy ngừoi ta.

Tôi không nói cách này có khả thi. Tôi chỉ nói về hậu quả của nó.
kaka bạn VietMini nói đúng cái này rất nguy hiểm và office có nói rõ trong tùy chọn của nó luôn là không khuyến cáo chọn tùy chọn "enable all macro" vì như vậy máy dễ bị dính virus và mã độc. Nhưng mình muốn test thử để xem có cách nào vượt rào của office bằng code vba trong excel hay không? nếu bạn biết chia sẽ cho mình với cám ơn nhiều nha!
 
Upvote 0
Upvote 0
Vào các diễn đàn chuyên về Windows hack, hay chuyên về vi rút mà hỏi.
 
Upvote 0
Cơ chế bảo mật của MS không đơn giản chỉ bạn click chuột vào cái disable hay enable đó là xong. Nên để click vào file excel chạy được trên các máy là hầu như không thể. Còn nếu chạy được bat, reg, exe, vbs, macro thì vụ vượt UAC, Admin Pass là có thể.

Nếu bạn muốn phá thì bỏ với excel, cách phá thiếu gì thứ phải dùng excel. Còn nếu tìm hiểu về bảo mật của office thì có thể tham khảo:
https://www.asd.gov.au/publications/protect/Hardening_MS_Office_2016.pdf
https://labs.mwrinfosecurity.com/as...FT-OFFICE-2013-PROTECTED-VIEW-SANDBOX-WP3.pdf
 
Lần chỉnh sửa cuối:
Upvote 0
A nói đúng với trường hợp excel đang để ở tùy chọn là "Disable all macros without notification" thì sẽ không có code nào chạy được hết. Nhưng nếu đang ở tùy chọn "Disable all macros with notification" thì e để cái sub "TestRegistry()" trong work book.Open thì nó vẫn chạy bình thường ạ. Cám ơn a đã chia sẽ.
Chỉ chạy bình thường được nếu người dùng có bấm nút "Enable Contents" trong lần đầu tiên, đúng không?
Vậy thay vì bấm, họ cứ vào Excel Opions mà chỉnh luôn cho rồi chứ chạy code làm gì?
Nói tóm lại: Đàng nào cũng phải có tác động bằng tay trong lần đầu tiên. Mà đã tác động bằng tay rồi thì code hoàn toàn không có ý nghĩa gì cả cho những lần sau đó
 
Upvote 0
Nó có 1 vài trường hợp xảy ra như vầy mạnh nêu ra để ta nghiên cứu nè:
1/ khi người ta cài Từ Windows7 To 10 thì mặc định tài khoản Administrator được ẩn đi không bật lên trừ phi người sử dụng biết và bật nó lên

còn tài khoản ban đầu mình sử dụng đó không phải là tài khoản Admin xịn vậy nên khi UAC kéo lên thì ta chạy Run as thì có thông báo yes Or No hình bài #7
nếu ta xử lý = code cho nó chọn Yes ok thì vấn đề xử lý trong Registry cực đơn giản

2/ khi người dùng bật tài khoản Administrator mà Set cho nó 1 cái Pass nữa lại thêm công đoạn nhập pass khi ta chạy code trên tài khoản khác dưới quyền Admin

3/ để xử lý câu 1 & 2 ta có thể sử dùng hàm API Or không dùng hàm API
VD Hàm API: RunAsUser ....... để chạy với quyền cao nhất của máy thì ta mới ghi thông tin vào khóa HKEY_LOCAL_MACHINE trong Registry được sau khi dã ghi vào Ok thì vấn đề còn lại ta muốn mằm chi thì mằm

4/ vấn đề là viết 1 cái hàm RunAsUser làm sao nó bao quát nhất khi bạn chạy code đang ở user nào và trên máy đó User Admin đang ẩn mặc định hay đã bật và có pass để ta có thể xử lý được hết những phát sinh đó vvv...

vấn đề thớt này có liên quan tới thớt sau

http://www.giaiphapexcel.com/diendan/threads/tự-động-chèn-code-vào-sheet-của-1-file-excel.80149/page-4

Các Bạn có thể tham khảo bài #12 link sau để xử lý câu 1 & 2

http://www.giaiphapexcel.com/diendan/threads/chạy-runas-ứng-dụng-trong-vba.90007/
 
Lần chỉnh sửa cuối:
Upvote 0
Chỉ chạy bình thường được nếu người dùng có bấm nút "Enable Contents" trong lần đầu tiên, đúng không?
Vậy thay vì bấm, họ cứ vào Excel Opions mà chỉnh luôn cho rồi chứ chạy code làm gì?
Nói tóm lại: Đàng nào cũng phải có tác động bằng tay trong lần đầu tiên. Mà đã tác động bằng tay rồi thì code hoàn toàn không có ý nghĩa gì cả cho những lần sau đó
E có làm thử 1 file chỉnh sữa lại code của nó và thêm vô phần kiểm tra version của excel là bao nhiều để tạo khóa Registry cho đúng luôn ạ. A chạy thử test giúp e xem nhé. E test thử 2 máy excel 2010 và 2016 đều chạy mà không cần phải bấm gì hết và excel sẽ được set lại thành tùy chọn "Enable all macro" mà không phải hỏi gì hết ạ. Cám ơn a đã chia sẽ!
 

File đính kèm

Upvote 0
Cơ chế bảo mật của MS không đơn giản chỉ bạn click chuột vào cái disable hay enable đó là xong. Nên để click vào file excel chạy được trên các máy là hầu như không thể. Còn nếu chạy được bat, reg, exe, vbs, macro thì vụ vượt UAC, Admin Pass là có thể.

Nếu bạn muốn phá thì bỏ với excel, cách phá thiếu gì thứ phải dùng excel. Còn nếu tìm hiểu về bảo mật của office thì có thể tham khảo:
https://www.asd.gov.au/publications/protect/Hardening_MS_Office_2016.pdf
https://labs.mwrinfosecurity.com/as...FT-OFFICE-2013-PROTECTED-VIEW-SANDBOX-WP3.pdf
Cám ơn bạn đã chia sẽ, cái này e chỉ thay đổi trong registry để thay đổi 1 tùy chọn trong excel thôi đó là tùy chọn "Enable all Macro" thôi ạ. Bên dưới e có đính kèm file e làm thử đó. Với điều kiện là tùy chọn macro trong excel đang được thiết lập mặc định ( Disable all macros with notification) thì nó sẽ chạy bình thường và set thành "Enable all macro" lên luôn ạ nên macro mình sẽ chạy bình thường mà không cần người dùng phải nhất enable security hay gì hết ạ.
 
Upvote 0
Bạn up lên mạng xong down về chạy lại thử xem.
 
Upvote 0
E có làm thử 1 file chỉnh sữa lại code của nó và thêm vô phần kiểm tra version của excel là bao nhiều để tạo khóa Registry cho đúng luôn ạ. A chạy thử test giúp e xem nhé. E test thử 2 máy excel 2010 và 2016 đều chạy mà không cần phải bấm gì hết và excel sẽ được set lại thành tùy chọn "Enable all macro" mà không phải hỏi gì hết ạ. Cám ơn a đã chia sẽ!
Máy tôi mở lên nó thế này:

Capture.JPG

Và không có gì chạy cả
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom