2011-07-27 1 views
0

내 프로세스를 탐지하는 방법은 Windows OS에서 수퍼 유저 권한을가집니다. 예를 들어 내 탐색기에서 수퍼 유저 권한을 사용하고 있는지 감지하고 싶습니다. 내 계정은 관리자 그룹 또는 일반 사용자 그룹입니다.내 프로세스를 탐지하는 방법은 Windows OS에서 수퍼 유저 권한을 가지고 있습니다.

+0

무엇이 문제입니까? 프로세스에 상승 된 토큰이 있는지 알고 싶습니까? 또는 사용자가 admin 그룹에 있는지 여부를 알고 싶습니까? 그리고 왜 당신은 알고 싶습니까? 당신은 "내 과정"이라고 말하면서 IE에 관해 이야기합니다. BHO를 코딩하고 있습니까? –

답변

0

IsUserAnAdmin 기능을 사용하십시오.

편집 :는 다른 방법으로, 그 API의 독서를 기반으로이 IsUserAnAdmin의 미래 가능성이 의심 될 것으로 보인다부터 직접 CheckTokenMembership를 사용하는 것이 더 좋을 수도; 그 페이지에 예제가 있습니다.

0

그룹 정보를 얻으려면 GetUserName 다음에 NetUserGetInfo 기능을 사용할 수 있습니다.하지만 질문을 통해 그러한 것이 있는지 여부는 분명하지 않습니다.

0

현재 프로세스가 향상되었는지 확인하는 VB6 솔루션은 다음과 같습니다. C++로 쉽게 변환 할 수 있어야합니다.

Public Function IsCurrentProcessElevated() As Boolean 
    Dim lRet As Long, pAdministratorsGroup As Long 
    Dim udtSidIdentifierAuthority As SID_IDENTIFIER_AUTHORITY 

    udtSidIdentifierAuthority.Value(5) = 5 ' SECURITY_NT_AUTHORITY 

    lRet = AllocateAndInitializeSid(udtSidIdentifierAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, pAdministratorsGroup) 
    If lRet <> 0 Then 
     If CheckTokenMembership(0, pAdministratorsGroup, lRet) <> 0 Then ' Use 0 to check the calling thread 
      IsCurrentProcessElevated = (lRet <> 0) 
     End If 
     ' Note: This line was often crashing in Windows 7, fix was to change the API declare to recieve argument ByVal 
     ' http://stackoverflow.com/questions/1913087/checktokenmembership-in-vb6-crashing-on-freesid-on-windows-7-and-windows-2008 
     Call FreeSid(pAdministratorsGroup) 
    End If 
End Function 
관련 문제