Thứ Năm, 28 tháng 6, 2007

Windows Vista: những thủ thuật nhỏ với Desktop

Đôi khi nguyên nhân xóa biểu tượng (icon) của trình duyệt Internet Explorer trên desktop của Windows Vista bắt nguồn từ sự lựa chọn các trình duyệt khác như FireFox, Opera... của người dùng. Để khôi phục icon Internet Explorer, bạn vào Registry Editor, tìm đến khóa giá trị:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel
Tạo 1 khóa (DWORD 32-bit) sau: {871C5380-42A0-1069-A2EA-08002B30309D}
Bạn có thể sao chép nội dung trên kể cả dấu ngoặc { }.
Đóng Registry Editor lại và không cần phải khởi động lại hệ thống, chỉ cần chờ vài giây là biểu tượng Internet Explorer lại hiện diện trên desktop.
Thanh công cụ Quick Launch là nơi bạn có thể đặt các shortcut của những chương trình thường dùng nhất để tiện việc kích hoạt khi cần thiết. Trong các phiên bản trước của hệ điều hành Windows, bạn phải tạo shortcut cho chương trình muốn đưa vào và thực hiện động tác kéo thả shorcut lên Quick Launch.
Trong Windows Vista, chỉ cần đơn giản tìm đến tập tin ứng dụng (application) tương ứng rồi nhấn phải chuột lên nó, chọn "Add to Quick Launch" là chương trình sẽ tự động được tạo shortcut và hiện diện trên thanh công cụ Quick Launch.
Một mẹo nhỏ là có thể dùng Process Explorer của Microsoft Sysinternal để có thể tìm những tập tin ứng dụng nhanh chóng.
Để thay đổi những icon trong Quick Launch, bạn phải chuột vào một khoảng trống trên QL và chọn "Open Folder". Thư mục Quick Launch sẽ xuất hiện, bạn có thể thực hiện các tác vụ dễ dàng như: đổi tên, xóa, tạo thư mục con ...
Security Center là ứng dụng thông báo cho người dùng những thiết lập bảo mật. Trong Windows Vista, Security Center có một khu vực riêng biệt cho Firewall (tường lửa), Automatic Updates (tự động cập nhật), Malware Protection (chống virus và spyware) cùng những thiết lập khác. Nếu một trong những phần trên không được cài đặt, hay không được cập nhật thì Security Center sẽ thông báo đến bạn qua biểu tượng màu vàng trong phần thông báo của khay hệ thống.
Tuy nhiên, những thông báo của Security Center sẽ có thể gây phiền phức và người dùng muốn giữ những thiết lập riêng của mình. Để gỡ bỏ thông báo của Security Center, ta thực hiện các bước sau:
Nhấn chuột phải lên biểu tượng của Security Center, chọn Open Security Center. Trong cửa sổ Security Center, nhấn chọn "Change the way Security Center alerts me" ở bên trái. Trong phần "Do you want to be notified of security issues" click chọn "Don't notify me and don't display the icon (not recommended)".
Một cách khác là ta có thể dùng câu lệnh để thực hiện tác vụ này bằng cách gõ lần lượt các dòng lệnh sau vào hộp thoại Run:
"C:\Windows\system32\rundll32.exe" C:\Windows\system32\shell32.dll,Control_RunDLL "C:\Windows\system32\wscui.cpl",Security Center

Kaspersky Antivirus và Internet Security

Như các bạn đã biết Kaspersky Antivirus (KAV) và Kaspersky Internet Security (KIS) do Kaspersky Lab cung cấp là hai trong những phần mềm diệt vi rút và bảo vệ máy tốt nhất hiện nay do hoạt động rất hiệu quả có tốc độ quét, làm sạch tệp tin bị nhiễm nhanh nhất, giao diện lại rễ sử dụng và có thể update offline. Tuy nhiên để có thể sơ hữu những tinh năng ưu việt này bạn phải trả 50USD một cái giá quả không nhỏ. Tuy nhien bạn vẫn có thể dùng free Để có được phiên bản đầy đủ (đã kíck hoạt) trước tiên bạn phải có phiên bản trial. Cái này bản có thể down trên trang
http://www.kaspersky.com/trials (phiên bản 6.0) hoặc http://download.9down.com/Kav_7.0.0.120.rar http://download.9down.com/Kis_7.0.0.120.rar (phiên bản 7.0) Và quan trọng nhất để sử dụng trọn vẹn các tính năng của KAV va KIS bạn phải kíck hoạt offline bằng lisence key ( neu muon dung free ^^). Cái này bạn có thể download tại :
http://rapidshare.com/files/38269675/KAV___KIS_7.0_Key_Only.rar
http://rapidshare.com/files/38269903/KAV___KIS_6.0_Key_Only.rar Vì dung lượng hai file này rất nhỏ nên bạn có thể download mà không phải đợi lâu ^^! Sau khi đã hoàn thành việc kíck hoạt bạn nên update. Cách update ofline bản có thể xem hướng dẫn tại
http://support.kaspersky.com/faq/?qid=208279232 Cuối cùng đế có một trình diệt vius hoàn hảo bạn có thế thay đổi skin (giao diện) cho nó. Download tại
http://skin.kaspersky.fr/index_en.php?list=v7
http://skin.kaspersky.fr/index_en.php?list=v6. Chúc các bạn thành công.
Nếu có ý kiến gì có thể post lên để mọi người cùng thảo luận ^^!

Thứ Ba, 26 tháng 6, 2007

Thiết Kế Phân Quyền Trong Access

Phân quyền trong AccessTrong Access đã hỗi trợ phân quyền bằng cách tạo file workGroup *.mdw, *.mda. tuy nhiên cách này hơi nhiêu khê ở chỗ là máy sử dụng phải map tới file này thì mới xài được. Vì vậy một cách khác mọi người quan tâm là phân quyền trực tiếp trong chương trình access của mình. Nếu mình post 1 đoạn chương trình lên cho mọi người tham khảo thì quá dễ dàng, nhưng điều đó không mang ý nghĩa học tập. Vì vậy, mình quyết định sẽ tiến hành Phân tích bài toán và thiết lập từng bước sao cho dễ hiểu nhất, ai biết Access cũng có thể làm được.I/Mô tả: Chương trình sẽ yêu cầu đăng nhập mỗi khi mở, nếu không có user name thì chỉ vào được quyền hạn chế dành cho khách.II/ Thiết kế và giải thuật:Mô tả ý tưởng:- Khi bạn đăng nhập vào, chương trình sẽ ghi nhận username của bạn trong một biến toàn cục(public).Sau đó sẽ qua một function để biết bạn thuộc group nào.( mình chia group thành các cấp khác nhau, cấp cao thì quyền nhiều hơn cấp dưới)- Ở mỗi process cụ thể sẽ cho biết cấp tối thiểu để được đăng nhập vào process đó.Chuẩn bị table:- Table cần có là danh sách user: tblDSUser(ID,pass)- Table lưu cấp của các user: tblWorkGroup(WgLevel, WgName,user)Trong đó : username là khóa ngoại liên kết với tblDSUserDữ liệu nhập thử:tblDSUserID --- PassAdmin ---- AdminDuytuan ---- tuanGuest ---- tblWorkGroupWGLevel---WgName---User9---Admin --- Admin8---User --- Duytuan0---Guest---guest
Việc đều tiên là bạn vào khai báo một biến toàn cục tên là user, cách làm như sau:Vào menu Tool => marcro=> Visual basic editorMột cửa sổ VB xuất hiện, tại đây bạn vào menu Inser => moduleTrong Module mới tạo, bạn khai báo một biến toàn cục để lưu tên user hiện hành:Public username as stringOK, bây giờ bạn đã đủ đồ nghề để tạo form đăng nhập.Xem hìnhĐầu tiên, bạn tạo 1 form, đặt tên nó là frmLogin1/Vẽ 1 lable với caption như sau “Xin mời nhập Username,pass hoặc nhấn vào guest để ghé thử”2/Vẽ 1 combobox đặt tên là: cbbusername, thuộc tính row source: SELECT tblDSUser.ID, tblDSUser.Pass FROM tblDSUser;3/ Vẽ một textbox đặt tên là txtPassWordInput mask kiểu Password4/ Vẽ 1 text box đặt tên là txtPassTempThuộc tính visible là No5/ vẽ một nút đặt tên là cmdLogin6/Vẽ một nút đặt tên là cmdGuestVậy là xong phần giao diện, bây giờ là cái ruộtMô tả:Sau khi cập nhật tên user thì txtPassTemp sẽ lấy về cái password , và field này user hoàn toàn không nhìn thấy. Mục đích là để so sánh pass này với cái pass của user nhập vào. Đúng thì tiếp tục log vào form chính, đồng thời gán biến username bằng tên đăng nhập, sai thì báo lỗi.Như vậy, hành động after Update của ComboBox nhập user như sau:
Bây giờ ta xử lý nút Login, đầu tiên bạn khoan đã xử. Bạn tạo 1 form đặt tên là frmMain rồi chừa trống đấy, form này để dành sau khi login thì nó sẽ gọi lên.Bây giờ ta quay lại với nút login.Nó phải làm các việc sau:+- Kiểm tra password nhập vào có đúng với field : txtPassTemp hay không, nếu đúng thì làm cái việc là gán biến toàn cục username bằng giá trị của ô CbbUsername.- Chào mừng user đó đăng nhập- Mở form frmMain- Đóng form frmLogin lạiNếu sai thì báo là nhập saiĐoạn code xử lý như sau:
Trích:
...
Private Sub cmdLogin_Click()If Me.txtPassWord.Value = Me.txtPassTemp.Value ThenUsername = Me.cbbUserNameMsgBox "Welcom To " & UsernameDoCmd.OpenForm "frmMain"DoCmd.Close acForm, "frmLogin"ElseMsgBox "Login Fail, check your Username and your password"End IfEnd Sub
Bây giờ tới nút cmdGuestTương tự nhưng không cần kiểm tra gì cả, tên username được gán bằng tên Guest và vào thẳng form main
Trích:
...
Private Sub CmdGuest_Click()Username = "Guest"MsgBox "Welcom To " & UsernameDoCmd.OpenForm "frmMain"DoCmd.Close acForm, "frmLogin"End Sub
Phù, hẹn thứ 2 ta tiếp với phần xử lý phân quyền trong frmMain nhé!
Trong khi chờ đợi các bạn cứ thiết kế Main form như hình nhé, nội dung thì thứ 2 No lên phân tích tiếp
Thứ 2 là ngày đầu tuần! Chào các bạn!Hôm trước mình nhầm lẫn một chút ở khâu chuẩn bị table
Trích:
...
Chuẩn bị table:- Table cần có là danh sách user: tblDSUser(ID,pass)- Table lưu cấp của các user: tblWorkGroup(WgLevel, WgName,user)Trong đó : username là khóa ngoại liên kết với tblDSUser
sai ở table tblWorkGroup, vì như vậy thì ở mỗi level ta chỉ tạo được một user thôiMình xin đính chính lại table nàytblWorkGroup(WgLevel, WgName,user)
Các bạn đã tạo form main như hình của mình post chưa?Đầu tiên, để chuẩn bị cái ruột cho mainform, chúng ta phải có một đoạn code để lấy về level của user hiện hành.Các bạn còn nhớ cái module mà bạn đã khai báo biến toàn cục: username chứ?bây giờ mở nó lên, viết tiếp vào đoạn code lấy về level user
Trích:
...
Function checkuser() As IntegerOn Error GoTo Err ' nếu user vào trực tiếp bằng quyền guest thì cho level là 0Dim rs1 As RecordsetDim sql As Stringsql = " select max(WGlevel) from tblWorkGroup where user= '" & Username & "'"Set rs1 = CurrentDb.OpenRecordset(sql)rs1.MoveFirstcheckuser = rs1(0).ValueExit FunctionErr:checkuser = 0Exit FunctionEnd Function
OK, bây giờ đồ nghề đầy đủ, các bạn vẽ mainform rồi chứ/? Đặt tên cái form đó là frmMain.Các nút trên form đặt tên lần lượt là: cmdAdmin,cmdUser,cmdGuestTrong chương trình của mình sẽ chia làm 9 cấp độ đăng nhập, quyền cao nhất Admin,sẽ vào với level 9, các user tùy theo là trưởng phòng hay nhân viên sẽ có level 1-8Guest sẽ vào với level 0. Giải thuật của ta ứng với mỗi nút là sẽ tạo ra yêu cầu level tối thiểu. Đối với user Admin thì tối thiểu phải level 9OK.Bây giờ ta xử lý nút cmd Admin như sau
Trích:
...
Private Sub cmdAdmin_Click()Dim userRequest As String ‘ biến yêu cầu user tối thiểuuserRequest = 9If userRequest <= checkuser ThenMsgBox "Xin chao ban đa dang nhap vao quyen admin"ElseMsgBox "ban khonn duoc dang nhap function nay"End IfEnd Sub
Tương tự với Nút user, ở ví dụ này, nút user yêu cầu phải level 8 mới vào được. bạn có thể hạ thấp level yêu cầu xuống cho nhân viên.
Trích:
...
Private Sub cmdUser_Click()Dim userRequest As StringuserRequest = 8If userRequest <= checkuser ThenMsgBox "Xin chao ban da dang nhap vao quyen user"ElseMsgBox "ban khong duoc dang nhap function nay"End IfEnd Sub
Và nút guest cũng tương tự
Trích:
...
Private Sub CmdGuest_Click()Dim userRequest As StringuserRequest = 0If userRequest <= checkuser ThenMsgBox "Xin chao dang nhap vao quyen khach"ElseMsgBox "ban khogn duoc dang nhap function nay"End IfEnd Sub
Hihi, đáng lẽ có thể sửa quyền khách cho hợp lý hơn, nhưng mình copy paster cho nhanh!
Hướng dẫn cơ bản tương đối ổn rồi, bây giờ ta “ màu mè” một chút là khi vào chương trình bắt buột phải login vào cái frmLogin, cách nào ư? Nhiều lắm, nhưng mình thích dùng cái marcro.Bạn tạo một marcro, đặt tên nó là AutoExecThằng này sẽ tự chạy mỗi khi ta vào chương trình.Nội dung của marcro AutoExec chỉ có 1 hành động dòng như sau:Open formForm name: frmLoginView: formWindows mode: DialogSở dĩ tôi bảo các bạn dùng marcro là vì cái Dialog này, nó bắt buột phải đăng nhập mới vào, còn không thì nhấn guest.Sau đó ta vào menu Tool =>startup bỏ chọn hết tất cả để nó không cho các user táy máy khi đăng nhập.Chưa xong đâu, bạn quay lại cái Module, mở nó lên, vào menu Tool => “tên chương trình” properties nhảy qua tab protection, cài password cho cái source của bạn luôn. Cho mấy tay táy máy khỏi link vào import mấy cái table quý hóa của mình.OK.Đóng chương trình và mở lại. Thử với các quyền thử xem!Và bây giờ bạn muốn edit chương trình thì làm thế nào? Dễ thôi! Nhấn phím shift trong khi mở nó sẽ không load macro AutoExec nữa, vào cửa sổ design như bình thường!Vậy chương trình không an toàn về bảo mật? Ồ không đâu, tôi sẽ giới thiệu trong bài khác về cách vô hiệu hóa phím shift, và khi muốn mở lại thì phải Enable phím shift.Thân, các bạn có thắc mắc gì nữa không?
Nếu các bạn chưa tin về tính bảo mật? Hãy thử chương trình Demo của Noname xem! trừ khi bạn đăng nhập vào quyền admin, còn lại các user kia thì không sửa xóa gì chương trình được cảhttp://duyeagle.googlepages.com/phanquyen.rarCác bạn có ý kiến gì về chương trình demo của No cứ đóng góp chúng ta cùng xây dựng phát triển nhé!