NetUserGetLocalGroups - under Windows7 pretty slow



  • Hallo liebe Community,

    habe hier ein kleines Problem.

    Ich nutze die NET-Function NetUserGetLocalGroups und es funktioniert auch einwandfrei. Zumindest wenn ich dies unter WindowsXP laufen lasse. Bei Windows7 braucht es hier ca. 5 Minuten und tut dann auch was es soll. Verstehe hier nur nicht wieso es nun langsamer zu sein scheint.

    Wollte mich erstmal allgemein erkundigen ob solche eine Laufzeiterhöhung ein bekanntes Phänomen dieser Methode und Win7 ist. Da ich halt einen neuen PC innerhalb einer Domain habe und dieser nun mit Win7 läuft kann es natürlich auch an vielen Einstellungen von dieser Seite her kommen.

    Habe:
    Win7 x64
    .Net V4.5

    Und hier mein funktionierender Code (working but slow code under my win7 with Qt 4.7.4)

    bool_t CKtGekkoLCM::checkLoginUser(QString s_domain, QString s_user)
    {CErrorLogging::instance().setErrorLogger(mpo_fileLogger); FUNCIN_LOG;
    	qDebug() << "\t>>\tcheckLoginUser()";
    
    	QStringList strList_AccountGroup;
    
    	QByteArray bytesServer, bytesUser;
    	bytesServer.append(s_domain.toUtf8());
    	char *pc_server = bytesServer.data();
    	Q_CHECK_PTR(pc_server);
    	bytesUser.append(s_user.toUtf8());
    	char *pc_user = bytesUser.data();
    	Q_CHECK_PTR(pc_user);
    
    //#########################
    //##### Get Usergroup #####
    //#########################
    
    	//std::string strServer = "";
    	WCHAR wstrServer[128];
    	size_t convertedChars = sizeof(wstrServer)/sizeof(WCHAR);
    	mbstowcs_s(&convertedChars, wstrServer, pc_server, _TRUNCATE);
    
    	//std::string strUser = "";
    	WCHAR wstrUser[128];
    	size_t convertedChars2 = sizeof(wstrUser)/sizeof(WCHAR);
    	mbstowcs_s(&convertedChars2, wstrUser, pc_user, _TRUNCATE);
    
    	LPLOCALGROUP_USERS_INFO_0 pBuf = NULL;
        DWORD dwLevel = 0;
    	DWORD dwflags = LG_INCLUDE_INDIRECT;
        DWORD dwPrefMaxLen = MAX_PREFERRED_LENGTH;
        DWORD dwEntriesRead = 0;
        DWORD dwTotalEntries = 0;
        NET_API_STATUS nStatus;
    
    	CErrorLogging::instance().setErrorLogger(mpo_fileLogger);	DEBUG_LOG("DO NetUserGetLocalGroups");
    
    	qDebug() << "wstrServer: " << pc_server << "\nwstrUser: " << pc_user;
    
        nStatus = NetUserGetLocalGroups(wstrServer,
    								   wstrUser,
    								   dwLevel,
    								   dwflags,
    								   (LPBYTE*)&pBuf,
    								   dwPrefMaxLen,
    								   &dwEntriesRead,
    								   &dwTotalEntries);
    
    	qDebug() << "\t\t>>\tNetUserGetLocalGroups return: " << nStatus;
    
    	if (nStatus == NERR_Success)
    	{
    	}
    

Anmelden zum Antworten