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

Đề tài: Code bảo vệ Prosses | error C2664: 'CreateProcessA' : cannot convert parameter

  1. #1
    Ngày gia nhập
    09 2008
    Bài viết
    328

    Mặc định Code bảo vệ Prosses | error C2664: 'CreateProcessA' : cannot convert parameter

    Visual C++ Code:
    1. #include "stdafx.h"
    2.  
    3.  #include <windows.h>
    4.  #include <stdio.h>
    5.  #include <aclapi.h>
    6.  
    7.  BOOL CreateProtectedProcess(
    8.  LPCTSTR lpApplicationName,                 // name of executable module
    9.  LPTSTR lpCommandLine,                      // command line string  
    10.  DWORD dwCreationFlags                      // creation flags
    11.  );
    12.  
    13.  int APIENTRY WinMain(HINSTANCE hInstance,
    14.                      HINSTANCE hPrevInstance,
    15.                      LPSTR     lpCmdLine,
    16.                      int       nCmdShow)
    17.  {
    18.  CreateProtectedProcess("c:\winnt\system32\calc.exe",           NULL, 0 );
    19.  return 0;
    20.  }
    21.  
    22.  BOOL CreateProtectedProcess(
    23.  LPCTSTR lpApplicationName,                 // name of executable module
    24.  LPTSTR lpCommandLine,                      // command line string  
    25.  DWORD dwCreationFlags                      // creation flags
    26.  )
    27.  {
    28.  DWORD dwRes;
    29.  PSID pEveryoneSID = NULL, pAdminSID = NULL;
    30.  PACL pACL = NULL;
    31.  PSECURITY_DESCRIPTOR pSD = NULL;
    32.  EXPLICIT_ACCESS ea[2];
    33.  SID_IDENTIFIER_AUTHORITY SIDAuthWorld = SECURITY_WORLD_SID_AUTHORITY;
    34.  SID_IDENTIFIER_AUTHORITY SIDAuthNT = SECURITY_NT_AUTHORITY;
    35.  SECURITY_ATTRIBUTES sa;
    36.  
    37.  // Create a well-known SID for the Everyone group.
    38.  
    39.  if(! AllocateAndInitializeSid( &SIDAuthWorld, 1,
    40.                  SECURITY_WORLD_RID,
    41.                  0, 0, 0, 0, 0, 0, 0,
    42.                  &pEveryoneSID) )
    43.  {    
    44.   return FALSE;
    45.  }
    46.  
    47.  // Initialize an EXPLICIT_ACCESS structure for an ACE.
    48.  // The ACE will allow Everyone read access to the object.
    49.  
    50.  ZeroMemory(&ea, 2 * sizeof(EXPLICIT_ACCESS));
    51.  ea[0].grfAccessPermissions = GENERIC_READ;
    52.  ea[0].grfAccessMode = DENY_ACCESS;
    53.  ea[0].grfInheritance= NO_INHERITANCE;
    54.  ea[0].Trustee.TrusteeForm = TRUSTEE_IS_SID;
    55.  ea[0].Trustee.TrusteeType = TRUSTEE_IS_WELL_KNOWN_GROUP;
    56.  ea[0].Trustee.ptstrName  = (LPTSTR) pEveryoneSID;
    57.  
    58.  // Create a SID for the BUILTIN\Administrators group.
    59.  
    60.  if(! AllocateAndInitializeSid( &SIDAuthNT, 2,
    61.                  SECURITY_BUILTIN_DOMAIN_RID,
    62.                  DOMAIN_ALIAS_RID_ADMINS,
    63.                  0, 0, 0, 0, 0, 0,
    64.                  &pAdminSID) )
    65.  {    
    66.   goto Cleanup;
    67.  }
    68.  
    69.  // Initialize an EXPLICIT_ACCESS structure for an ACE.
    70.  // The ACE will allow the Administrators group full access to the key.
    71.  
    72.  ea[1].grfAccessPermissions = GENERIC_READ;
    73.  ea[1].grfAccessMode = DENY_ACCESS;
    74.  ea[1].grfInheritance= NO_INHERITANCE;
    75.  ea[1].Trustee.TrusteeForm = TRUSTEE_IS_SID;
    76.  ea[1].Trustee.TrusteeType = TRUSTEE_IS_GROUP;
    77.  ea[1].Trustee.ptstrName  = (LPTSTR) pAdminSID;
    78.  
    79.  // Create a new ACL that contains the new ACEs.
    80.  
    81.  dwRes = SetEntriesInAcl(2, ea, NULL, &pACL);
    82.  if (ERROR_SUCCESS != dwRes)
    83.  {    
    84.   goto Cleanup;
    85.  }
    86.  
    87.  // Initialize a security descriptor.  
    88.  
    89.  pSD = (PSECURITY_DESCRIPTOR) LocalAlloc(LPTR,
    90.                          SECURITY_DESCRIPTOR_MIN_LENGTH);
    91.  if (pSD == NULL)
    92.  {    
    93.   goto Cleanup;
    94.  }
    95.  
    96.  if (!InitializeSecurityDescriptor(pSD, SECURITY_DESCRIPTOR_REVISION))
    97.  {      
    98.   goto Cleanup;
    99.  }
    100.  
    101.  // Add the ACL to the security descriptor.
    102.  
    103.  if (!SetSecurityDescriptorDacl(pSD, TRUE,     // fDaclPresent flag  
    104.    pACL, FALSE))   // not a default DACL
    105.  {      
    106.   goto Cleanup;
    107.  }
    108.  
    109.  // Initialize a security attributes structure.
    110.  
    111.  sa.nLength = sizeof (SECURITY_ATTRIBUTES);
    112.  sa.lpSecurityDescriptor = pSD;
    113.  sa.bInheritHandle = FALSE;
    114.  
    115.  // Use the security attributes to set the security descriptor
    116.  // when you create a key.
    117.  
    118.  PROCESS_INFORMATION pi;
    119.  STARTUPINFO si;
    120.  memset(π,0,sizeof(pi));
    121.  memset(&si,0,sizeof(si));
    122.  si.cb = sizeof(si);
    123.  si.wShowWindow = SW_SHOW;
    124.  
    125.  CreateProcess(lpApplicationName,lpCommandLine, &sa,  &sa,dwCreationFlags,0,0,0,&si,π);
    126.  
    127.  // clean up data
    128.  Cleanup:
    129.  
    130.     if (pEveryoneSID)     FreeSid(pEveryoneSID);
    131.     if (pAdminSID)         FreeSid(pAdminSID);
    132.     if (pACL)         LocalFree(pACL);
    133.     if (pSD)         LocalFree(pSD);
    134.    
    135.  return TRUE;
    136.  
    137.  }
    mình có lên mạng và kiếm được mã con này nhưng không hiểu sao khi dịch thì phát sinh ra 1 lỗi,anh em xem hộ mình với


    Output Code:
    1. --------------------Configuration: ma bao ve - Win32 Debug--------------------
    2. Compiling...
    3. sdg.cpp
    4. C:\VC\ma bao ve\sdg.cpp(126) : error C2664: 'CreateProcessA' : cannot convert parameter 10 from 'struct _iobuf *' to 'struct _PROCESS_INFORMATION *'
    5.         Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
    6. Error executing cl.exe.
    7.  
    8. ma bao ve.exe - 1 error(s), 0 warning(s)

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Mặc định Bảo vệ process - code hoàn chỉnh

    Mình đã sửa lại chạy được rồi :

    C++ Code:
    1. #include "stdafx.h"
    2. #include <windows.h>
    3. #include <stdio.h>
    4. #include <aclapi.h>
    5.  
    6. BOOL CreateProtectedProcess(LPCTSTR lpApplicationName,LPTSTR lpCommandLine,DWORD dwCreationFlags);
    7.  
    8. int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
    9. {
    10.     CreateProtectedProcess("c:\\windows\\system32\\calc.exe",NULL,0);
    11.     return 0;
    12. }
    13.  
    14. BOOL CreateProtectedProcess(LPCTSTR lpApplicationName,LPTSTR lpCommandLine,DWORD dwCreationFlags)
    15. {
    16.     DWORD dwRes;
    17.     PSID pEveryoneSID = NULL, pAdminSID = NULL;
    18.     PACL pACL = NULL;
    19.     PSECURITY_DESCRIPTOR pSD = NULL;
    20.     EXPLICIT_ACCESS ea[2];
    21.     SID_IDENTIFIER_AUTHORITY SIDAuthWorld = SECURITY_WORLD_SID_AUTHORITY;
    22.     SID_IDENTIFIER_AUTHORITY SIDAuthNT = SECURITY_NT_AUTHORITY;
    23.     SECURITY_ATTRIBUTES sa;
    24.  
    25.     // Create a well-known SID for the Everyone group.
    26.  
    27.     if(! AllocateAndInitializeSid( &SIDAuthWorld, 1,SECURITY_WORLD_RID,0, 0, 0, 0, 0, 0, 0,&pEveryoneSID))
    28.     {    
    29.         return FALSE;
    30.     }
    31.  
    32.     // Initialize an EXPLICIT_ACCESS structure for an ACE.
    33.     // The ACE will allow Everyone read access to the object.
    34.  
    35.     ZeroMemory(&ea, 2 * sizeof(EXPLICIT_ACCESS));
    36.     ea[0].grfAccessPermissions = GENERIC_READ;
    37.     ea[0].grfAccessMode = DENY_ACCESS;
    38.     ea[0].grfInheritance= NO_INHERITANCE;
    39.     ea[0].Trustee.TrusteeForm = TRUSTEE_IS_SID;
    40.     ea[0].Trustee.TrusteeType = TRUSTEE_IS_WELL_KNOWN_GROUP;
    41.     ea[0].Trustee.ptstrName  = (LPTSTR) pEveryoneSID;
    42.  
    43.     // Create a SID for the BUILTIN\Administrators group.
    44.  
    45.     if(! AllocateAndInitializeSid( &SIDAuthNT, 2,SECURITY_BUILTIN_DOMAIN_RID,DOMAIN_ALIAS_RID_ADMINS,0, 0, 0, 0, 0, 0&pAdminSID) )
    46.     {    
    47.         goto Cleanup;
    48.     }
    49.  
    50.     // Initialize an EXPLICIT_ACCESS structure for an ACE.
    51.     // The ACE will allow the Administrators group full access to the key.
    52.  
    53.     ea[1].grfAccessPermissions = GENERIC_READ;
    54.     ea[1].grfAccessMode = DENY_ACCESS;
    55.     ea[1].grfInheritance= NO_INHERITANCE;
    56.     ea[1].Trustee.TrusteeForm = TRUSTEE_IS_SID;
    57.     ea[1].Trustee.TrusteeType = TRUSTEE_IS_GROUP;
    58.     ea[1].Trustee.ptstrName  = (LPTSTR) pAdminSID;
    59.  
    60.     // Create a new ACL that contains the new ACEs.
    61.  
    62.     dwRes = SetEntriesInAcl(2, ea, NULL, &pACL);
    63.     if (ERROR_SUCCESS != dwRes)
    64.     {    
    65.         goto Cleanup;
    66.     }
    67.  
    68.     // Initialize a security descriptor.  
    69.  
    70.     pSD = (PSECURITY_DESCRIPTOR) LocalAlloc(LPTR,
    71.     SECURITY_DESCRIPTOR_MIN_LENGTH);
    72.     if (pSD == NULL)
    73.     {    
    74.         goto Cleanup;
    75.     }
    76.  
    77.     if (!InitializeSecurityDescriptor(pSD, SECURITY_DESCRIPTOR_REVISION))
    78.     {      
    79.         goto Cleanup;
    80.     }
    81.  
    82.     // Add the ACL to the security descriptor.
    83.  
    84.     if (!SetSecurityDescriptorDacl(pSD, TRUE,   pACL, FALSE))   // not a default DACL
    85.     {      
    86.         goto Cleanup;
    87.     }
    88.  
    89.     // Initialize a security attributes structure.
    90.  
    91.     sa.nLength = sizeof (SECURITY_ATTRIBUTES);
    92.     sa.lpSecurityDescriptor = pSD;
    93.     sa.bInheritHandle = FALSE;
    94.  
    95.     // Use the security attributes to set the security descriptor
    96.     // when you create a key.
    97.  
    98.     PROCESS_INFORMATION pi;
    99.     STARTUPINFO si;
    100.     memset((void*)&pi,0,sizeof(pi));
    101.     memset((void*)&si,0,sizeof(si));
    102.     si.cb = sizeof(si);
    103.     si.wShowWindow = SW_SHOW;
    104.  
    105.     CreateProcess(lpApplicationName,lpCommandLine, &sa,  &sa,dwCreationFlags,0,0,0,&si,&pi);
    106.  
    107.     // clean up data
    108.     Cleanup:
    109.  
    110.     if (pEveryoneSID) FreeSid(pEveryoneSID);
    111.     if (pAdminSID)FreeSid(pAdminSID);
    112.     if (pACL) LocalFree(pACL);
    113.     if (pSD) LocalFree(pSD);
    114.  
    115.     return TRUE;
    116.  
    117. }
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

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

  1. Lỗi Failed to convert parameter value from a String to a Int32.
    Gửi bởi chungnam098 trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 5
    Bài viết cuối: 19-10-2012, 10:36 AM
  2. Giải quyết lỗi C2664: 'cannot convert parameter 1 from 'char' to 'time_t *' như thế nào ?
    Gửi bởi phuongvan trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 3
    Bài viết cuối: 27-09-2012, 11:44 AM
  3. Cách khác phục lỗi 'DrawTextW' : cannot convert parameter 2 from 'char *' to 'LPCWSTR'?
    Gửi bởi nasural trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 5
    Bài viết cuối: 03-03-2012, 09:11 AM
  4. Cho hỏi lỗi cannot convert parameter 3 from 'WORD *' to 'LPCWSTR'
    Gửi bởi chuong01 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 6
    Bài viết cuối: 27-08-2010, 04:05 AM
  5. C2664: 'Diem::khoangCach' : cannot convert parameter 1 from 'Diem' to 'Diem'
    Gửi bởi kqphu trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 5
    Bài viết cuối: 14-07-2010, 07:48 PM

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