Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: Có cách nào tự set quyền Privilege cho Process của mình không ???

  1. #1
    Ngày gia nhập
    10 2007
    Bài viết
    45

    Question Có cách nào tự set quyền Privilege cho Process của mình không ???

    - Chương trình mình đang làm có 1 số hàm cần phải có quyền Privilege mới chạy được (vd cấm End Process), mình có tham khảo 1 số đoạn code thì đọc không hiểu 1 cái chi hết.
    vd:
    Code:
    http://forums.congdongcviet.com/showthread.php?p=20534
    - À, có ai có kinh nghiệm đọc MSDN không ạ?
    Hic, sao nó bố trí lung tung quá.
    Vd hàm : openprocesstoken(...), các tham biến của nó lại dẫn tùm lum đến mấy hàm khác => rối tung cả lên ạ :((.

    Thân,
    Cảm ơn nhiều .

  2. #2
    Ngày gia nhập
    07 2007
    Nơi ở
    TP.HCM
    Bài viết
    199

    Bạn chép hàm này vào, muốn set quyền nào thì bạn truyền tên quyền đó vào.
    C++ Code:
    1.  
    2. //code khởi động đặc quyền debug
    3. ::SetTokenPrivilege(SE_DEBUG_NAME);
    4.  
    5. //code khởi động đặc quyền Shutdown
    6. ::SetTokenPrivilege(SE_SHUTDOWN_NAME);
    7.  
    8. //code gỡ bỏ đặc quyền debug
    9. ::SetTokenPrivilege(SE_DEBUG_NAME, false);
    10.  
    11. // Để biết danh sách các constant SE_DEBUG_NAME, SE_SHUTDOWN_NAME...
    12. // và ý nghĩa của nó bạn tham khảo trong msdn hoặc trong các file "windows.h"...
    C++ Code:
    1. bool SetTokenPrivilege(LPCTSTR pszPrivilege, bool enable = true)
    2. {
    3.     HANDLE hToken        = 0;
    4.     TOKEN_PRIVILEGES tkp = {0};
    5.  
    6.     // Get a token for this process.
    7.     if (!OpenProcessToken(GetCurrentProcess(),
    8.                           TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,
    9.                           &hToken))
    10.     {
    11.         return false;
    12.     }
    13.  
    14.     // Get the LUID for the privilege.
    15.     if (!LookupPrivilegeValue(NULL, pszPrivilege, &tkp.Privileges[0].Luid))
    16.     {
    17.         return false;
    18.     }
    19.  
    20.     tkp.PrivilegeCount = 1;
    21.     tkp.Privileges[0].Attributes = enable ? SE_PRIVILEGE_ENABLED : SE_PRIVILEGE_REMOVED;
    22.  
    23.     // Set the privilege for this process.
    24.     AdjustTokenPrivileges(hToken, false, &tkp, 0, 0, 0);
    25.     ::CloseHandle(hToken);
    26.  
    27.     return (GetLastError() == ERROR_SUCCESS);
    28. }
    Đã được chỉnh sửa lần cuối bởi DKhanh : 13-11-2008 lúc 09:20 AM.

Các đề tài tương tự

  1. Phân phối độc quyền sàn tầng 3,9,16,20,22,26,31,36 Kim Văn Kim Lũ
    Gửi bởi ephat245 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 09-04-2013, 02:50 PM
  2. Inter Process Communication - Share Memory Multi - Process
    Gửi bởi yaiba_forever trong diễn đàn Windows API, Hooking, xử lý Windows Message
    Trả lời: 20
    Bài viết cuối: 11-01-2013, 10:38 PM
  3. Trả lời: 2
    Bài viết cuối: 19-10-2012, 04:20 PM
  4. [Linux API] Hướng Dẫn Kỹ Thuật Inter Process Memory và semaphore Nhiều Process
    Gửi bởi AlexF trong diễn đàn Thủ thuật, Tutorials và Mã nguồn
    Trả lời: 0
    Bài viết cuối: 21-04-2011, 11:06 PM
  5. Inter Process Communication - Share Memory Multi - Process
    Gửi bởi yaiba_forever trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 13
    Bài viết cuối: 25-12-2008, 09:45 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn