Zum Inhalt springen

API LoadUserProfile


daytalker

Empfohlene Beiträge

Hi alle zusammen,

versuche mich grad mittels VB.NET besagte Funktion aufzurufen, um auf dem Server das Profil eines impersonierten User zu laden.

Hat hierbei irgendjemand schon erfahrung und kann mir helfen ? klappt nämlich nich so wie ich das möchte, bekomme immer den Fehler 87, der allerdings lauf MSDN nur auftreten dürfte, wenn "dwSize" von der Strukture nicht auf sizeof(PROFILEINFO) sitzt, oder lpUserName NULL ist.

Beides ist bei mir nicht der Fall, trotzdem kommt besagter Fehler.

Bitte um hilfe, danke

daytalker

Link zu diesem Kommentar
Auf anderen Seiten teilen

klaro ... hier mal den code :


<%@ import Namespace="System.IO" %>

<%@ import Namespace="System.Diagnostics" %>

<%@ import Namespace="System.Runtime.InteropServices" %>

<%@ import Namespace="System.Security.Principal" %>

<%@ Page Language="VB" Debug="true"%>



<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <link href="css/format.css" rel="styleSheet" type="text/css" />

    <title>ASP.NET Testseite</title>    

    <!-- VB.Net für die dynamischen Funktionen, hat nix mit JS zu tun -->

    <script language="vb" runat="server">  

        '##############################################################################

        '##############################################################################

        '

        ' unmanaged CODE

        '

        '**********************

#Region "API Structures / Enums"

        Const GENERIC_ALL As Int32 = &H10000000

        Enum TOKEN_TYPE As Integer

            TokenPrimary = 1

            TokenImpersonation = 2

        End Enum


        Enum SECURITY_IMPERSONATION_LEVEL As Integer

            SecurityAnonymous = 0

            SecurityIdentification = 1

            SecurityImpersonation = 2

            SecurityDelegation = 3

        End Enum


        <StructLayout(LayoutKind.Sequential)> _

        Structure STARTUPINFO

            Dim cb As Int32

            Dim lpReserved As String

            Dim lpDesktop As String

            Dim lpTitle As String

            Dim dwX As Int32

            Dim dwY As Int32

            Dim dwXSize As Int32

            Dim dwYSize As Int32

            Dim dwXCountChars As Int32

            Dim dwYCountChars As Int32

            Dim dwFillAttribute As Int32

            Dim dwFlags As Int32

            Dim wShowWindow As Int16

            Dim cbReserved2 As Int16

            Dim lpReserved2 As IntPtr

            Dim hStdInput As IntPtr

            Dim hStdOutput As IntPtr

            Dim hStdError As IntPtr

        End Structure


        <StructLayout(LayoutKind.Sequential)> _

        Structure PROCESS_INFORMATION

            Dim hProcess As IntPtr

            Dim hThread As IntPtr

            Dim dwProcessId As Int32

            Dim dwThreadId As Int32

        End Structure


        <StructLayout(LayoutKind.Sequential)> _

        Structure SECURITY_ATTRIBUTES

            Dim nLength As Int32

            Dim lpSecurityDescriptor As IntPtr

            Dim bInheritHandle As Boolean

        End Structure

        '-----------------NEU------------------

        <StructLayout(LayoutKind.Sequential)> _

        Structure PROFILEINFO

            Dim dwSize As Integer

            Dim dwFlags As Integer

            Dim lpUserName As String

            Dim lpProfilePath As String

            Dim lpDefaultPath As String

            Dim lpServerName As String

            Dim lpPolicyPath As String

            Dim hProfile As IntPtr

        End Structure

        '------------------------------        

#End Region

        '**********************        

#Region "API Functions"

        ' CloseHandle Funkion

        <DllImport("kernel32.dll", EntryPoint:="CloseHandle", SetLastError:=True, _

                   CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.StdCall)> _

        Public Shared Function CloseHandle(ByVal hObject As IntPtr) As Boolean

        End Function


        'DuplicateTokenEx Funktion

        <DllImport("advapi32.dll", EntryPoint:="DuplicateTokenEx", SetLastError:=True, _

                   CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.StdCall)> _

        Public Shared Function DuplicateTokenEx( _

                                        ByVal hExistingToken As IntPtr, _

                                        ByVal dwDesiredAccess As Int32, _

                                        ByRef lpTokenAttributes As SECURITY_ATTRIBUTES, _

                                        ByVal ImpersonationLevel As SECURITY_IMPERSONATION_LEVEL, _

                                        ByVal TokenType As TOKEN_TYPE, _

                                        ByRef phNewToken As IntPtr) As Boolean

        End Function


        <DllImport("userenv.dll", EntryPoint:="LoadUserProfileA", SetLastError:=True, _

                   CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.StdCall)> _

        Public Shared Function LoadUserProfileA(ByVal hToken As Long, _

                                                ByVal lpProfileInfo As PROFILEINFO) As Boolean

        End Function

#End Region

        '**********************

        '*************************************************************************************************        

        Public Sub Page_Load(ByVal s As Object, ByVal e As EventArgs)


            Dim Token As New IntPtr(0)

            Dim dupToken As New IntPtr(0)

            Dim bRet As Boolean = False

            Dim sa As New SECURITY_ATTRIBUTES

            Dim si As New STARTUPINFO

            Dim pi As New PROCESS_INFORMATION


            Dim UserProfile As PROFILEINFO

            Dim bResult As Boolean 


            Token = WindowsIdentity.GetCurrent().Token 

            Identity.Text &= "<BR>" & WindowsIdentity.GetCurrent().Name.ToString()  


            sa.bInheritHandle = False

            sa.nLength = Marshal.SizeOf(sa)

            sa.lpSecurityDescriptor = IntPtr.Zero


            Token = WindowsIdentity.GetCurrent().Token 


            bRet = DuplicateTokenEx(Token, GENERIC_ALL, sa, SECURITY_IMPERSONATION_LEVEL.SecurityDelegation, _

                                    TOKEN_TYPE.TokenPrimary, dupToken)

            If (bRet = False) Then

                Duplicate.Text &= "<BR>DuplicateTokenEx failed with " & Marshal.GetLastWin32Error().ToString()

            Else

                Duplicate.Text &= "<BR>DuplicateTokenEx SUCCESS" 

            End If            


            UserProfile = New PROFILEINFO()

            UserProfile.lpUserName = "RSINT\EICKEL_S_ADMIN"

            UserProfile.dwSize = Marshal.SizeOf(UserProfile)

            bResult = LoadUserProfileA(dupToken, UserProfile)


            If Not bResult Then

                userPro.Text = "Error loading user profile : " & Marshal.GetLastWin32Error().ToString()

            Else : userPro.Text = "The handle to the user profile is : " & UserProfile.hProfile.ToString

            End If


            bRet = CloseHandle(dupToken) 


            If (bRet = False) Then

                CloseH.Text &= "<BR>CloseHandle of dupToken failed with " & Marshal.GetLastWin32Error().ToString()

            Else

                CloseH.Text &= "<BR>CloseHandle of dupToken SUCCESS"    

            End If            

        '*************************************************************************************************


</script>

</head>

</html>

hoffe du kannst mir helfen

gruß

daytalker

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 Monate später...

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...