Avatar billede viht Nybegynder
02. november 2002 - 00:28 Der er 11 kommentarer og
1 løsning

GetUserNameEx

Jeg kan ikke kalde GetUserNameEx i dev-cpp. Jeg tror min Security.h er for gammel... og måske også nogle af de andre header filer. Findes der et sted jeg kan hente nyere?
Avatar billede soreno Praktikant
02. november 2002 - 00:44 #1
hent nyeste win32 api her:
https://sourceforge.net/project/showfiles.php?group_id=2435
(den er nederst på siden og har version 2.0)

kopier include biblioteket oveni det du allerede har.
det samme med libs.
Avatar billede soreno Praktikant
02. november 2002 - 00:45 #2
hvorfor kan du egentlig ikke "nøjes" med GetUserName" ?
Avatar billede viht Nybegynder
02. november 2002 - 00:55 #3
Den understøtter ikke domænepræfiks. Den vil slet ikke hente brugernavnet hvis brugeren er logget på et domæne.
Avatar billede soreno Praktikant
02. november 2002 - 00:58 #4
aha,
jeg har lige kigget lidt på det og jeg kan faktisk ikke finde GetUserNameEx nogen steder i min version af api'et.

en løsning kunne være at kalde "secur32.dll" direkte, og få udført metoden "GetUserNameExA" (eller "GetUserNameExW" hvis du bruger unicode.. men det gør du jo nok ikke ?).
men så er du nødt til at kende parameterne til funktionen, men mon ikke de står et sted (imellem al kaos) på msdn ?
Avatar billede viht Nybegynder
02. november 2002 - 00:59 #5
Jeg kender parametrene til funktionen.. hvordan kalder jeg den så siger du?
Avatar billede soreno Praktikant
02. november 2002 - 01:03 #6
hvis du har parameterne til den vil jeg gerne lige kigge på det - det eksempel jeg vil gå ud fra er lidt kompliseret at rette til så det giver mening at poste det..
Avatar billede viht Nybegynder
02. november 2002 - 01:07 #7
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/getusernameex.asp

Jeg prøver selv lige at loade secure32.dll og udføre metoden den vej.
Avatar billede viht Nybegynder
02. november 2002 - 01:18 #8
Dog uden resultat. Jeg kan ikke linke den, metoden må heller ikke ligge i libSecur32.a
Avatar billede soreno Praktikant
02. november 2002 - 01:20 #9
jeg får en:
The parameter is incorrect.  ERROR_INVALID_PARAMETER

hvis jeg bruger de parametre der er vist i linket ??
Avatar billede viht Nybegynder
02. november 2002 - 01:24 #10
Har du typedef'et den enum der bliver brugt og smidt den med?
Avatar billede soreno Praktikant
02. november 2002 - 01:26 #11
ja, det har jeg. Men nu er jeg træt og vil i seng. Det jeg er kommet frem til foreløbig er:

#include <windows.h>
#include <stdio.h>

typedef enum
{
  NameUnknown = 0,
  NameFullyQualifiedDN = 1,
  NameSamCompatible = 2,
  NameDisplay = 3,
  NameUniqueId = 6,
  NameCanonical = 7,
  NameUserPrincipal = 8,
  NameCanonicalEx = 9,
  NameServicePrincipal = 10
} EXTENDED_NAME_FORMAT, *PEXTENDED_NAME_FORMAT;

typedef BOOL WINAPI (* DLLFunc)(EXTENDED_NAME_FORMAT NameFormat, LPTSTR lpNameBuffer, PULONG nSize);

BOOL User_GetUserNameExA(EXTENDED_NAME_FORMAT NameFormat, LPTSTR lpNameBuffer, PULONG nSize)
{
    HINSTANCE dll;
    DLLFunc dllFunc;
    BOOL retval;// = FALSE;
   
    dll=LoadLibrary("secur32.dll");
    if(dll != NULL)
    {
        dllFunc = (DLLFunc)GetProcAddress(dll, "GetUserNameExA");
        if(dllFunc != NULL)
        {
            retval = dllFunc(NameFormat, lpNameBuffer, nSize);
            printf("name %s\n", lpNameBuffer);
            printf("retval %i\n", retval);
            printf("lasterror %i\n", GetLastError());
            if(!FreeLibrary(dll))
            {
                printf("*error* FreeLibrary\n");
            }
        }
        else
        {
            printf("*error* GetProcAddress\n");
        }
    }
    else
    {
        printf("*error* LoadLibrary\n");
    }
    return retval;
}


int main(int argc, char **argv)
{
    BOOL val;
    EXTENDED_NAME_FORMAT enf;
    char nameBuffer[1024];
    ULONG size = 1024;
   
    if(User_GetUserNameExA(enf, nameBuffer, &size))
        printf("*success* - name %s\n", nameBuffer);
    else
        printf("*failed!*\n");
    return 0;
}

måske du kan bruge det til noget ?
evt. vil jeg kigge på det igen engang i morgen hvis ikke du har løst det inden da :-)
Avatar billede viht Nybegynder
02. november 2002 - 01:27 #12
Sov godt.. jeg holder mig vågen og kigger på det lidt endnu.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester