Konvertierung der Commandline Argumente



  • hi zusammen..

    ich habe versucht ein vorhandenes programm mit argumenten zu erweitern. jedoch klappt aus mir unerfindlichen gründen danach ein funktionsaufruf nicht mehr..

    int main(int argc, char* argv[])
    {
    
    	switch (argc) {
    		case 3:	
    			printf("DenyLogon\r\n-------------------------------------------------------\r\n\r\n");
    
    			LSA_HANDLE lsahPolicyHandle;
    			WCHAR computername[7];
    			mbstowcs(computername, argv[1], 7);
    
    			// lsahPolicyHandle = GetPolicyHandle(computername); // GEHT NICHT!
    			lsahPolicyHandle = GetPolicyHandle(L"GIAL053");  // GEHT!
    
    			if(lsahPolicyHandle != NULL)
    			{
    				DisableLogonRights(lsahPolicyHandle, atoi(argv[2]));
    				ClosePolicyHandle(lsahPolicyHandle);
    			}
    
    			return 0;
    			break;
    
    		default:
    			printf ("\r\n\r\n  Fehler: Es wurden nicht genuegend Parameter uebergeben!\r\n\r\n  -------------------------------------------------------\r\n\r\n");
    			printf ("  DenyLogon.exe Computer Zeit\r\n\r\n  Beispiel: DenyLogon.exe GIAL123 15\n\n");
    			printf ("  Computer:\tComputername ohne Backslashes\r\n  Zeit:\t\tDauer der Sperrung in Sekunden\r\n\r\n");
    
    			return 0;
    			break;
    	}
    }
    

    und zwar geht es um den computername. wenn ich ihn hardcoded drin habe funktionierts, ansonsten geht es nicht.

    kann mir wer helfen?

    so long
    cYrus



  • Hi,

    in Deinem wchar buffer ist platz für 7 Zeichen ... was ist mit
    der terminierenden \0 am Ende ?

    Kaum 10 Zeilen Code und schon ein Bufferoverflow ... HURRA !

    MfG.


Anmelden zum Antworten