Cacls.exe klappt nicht richtig



  • Hallo,

    Ich versuche den Einstieg in C++, dabei möchte ich langsam vorgehen und nicht gleich ein fertiges Programm komplett in C++ schreiben (zu aufwändig).
    Deshalb habe ich cmd Befehle drin. Beim Ausführen bekomme ich diese Fehler:

    Zuordnungen von Kontennamen und Sicherheitskennungen wurden nicht durchgeführt.
    Zuordnungen von Kontennamen und Sicherheitskennungen wurden nicht durchgeführt.

    Kann mir jemand sagen was hier falsch läuft?

    Danke.

    #include "stdafx.h"
    #include "Windows.h"
    #include <string>
    
    wchar_t* env(wchar_t* environmentVariable) //Funktion Umgebungsvariable
    {
    	wchar_t* buffer;
    	size_t bufferSize;
    	errno_t errorCode;
    	errorCode = _wdupenv_s(&buffer, &bufferSize, environmentVariable);
    	return buffer;
    }
    
    int main()
    {
    	std::wstring USERNAME = env(_TEXT("USERNAME"));
    
    	system("ECHO Y| cacls.exe \"C:\\Windows\\system32\\ieapfltr.dll\" /e /g '%s':F"), USERNAME;
    	system("ECHO Y| cacls.exe \"C:\\Windows\\system32\\iedkcs32.dll\" /e /g '%s':F"), USERNAME;
    }
    


  • Ich habe keine Ahnung was dein system Aufruf machen soll aber ich kann dir sagen, dass man mit dem komma so keine strings zusammen fügt (ich rate mal, dass dies beabsichtigt war). Das geht mit einem + und dann auch innerhalb des Funktionsaufrufs.



  • Es soll ein paar einfache Dinge tun:
    Besitzer der Datei umschreiben, Volle Rechte geben, Datei umbenennen.

    Ich habe das mit dem Usernamen jetzt so gelöst:

    system("takeown.exe /F \"C:\\Windows\\system32\\ieapfltr.dll\"");
    	system("takeown.exe /F \"C:\\Windows\\system32\\iedkcs32.dll\"");
    
    	system("ECHO Y| cacls.exe \"C:\\Windows\\system32\\ieapfltr.dll\" /e /r %USERNAME%");
    	system("ECHO Y| cacls.exe \"C:\\Windows\\system32\\iedkcs32.dll\" /e /g %USERNAME%:F");
    
    	system("ECHO Y| cacls.exe \"C:\\Windows\\system32\\ieapfltr.dll\" /e /r %USERNAME%");
    	system("ECHO Y| cacls.exe \"C:\\Windows\\system32\\iedkcs32.dll\" /e /g %USERNAME%:F");
    
    				// Rename files to backup
    	system("MOVE  \"C:\\Windows\\system32\\ieapfltr.dll\" \"C:\\Windows\\system32\\ieapfltr.dll.bak\"");
    	system("MOVE  \"C:\\Windows\\system32\\iedkcs32.dll\" \"C:\\Windows\\system32\\iedkcs32.dll.bak\"");
    
    ERFOLGREICH: Die Datei (oder der Ordner) "C:\Windows\system32\ieapfltr.dll" gehört jetzt dem Benutzer "DESKTOP-LHB50OE\Tester".
    
    ERFOLGREICH: Die Datei (oder der Ordner) "C:\Windows\system32\iedkcs32.dll" gehört jetzt dem Benutzer "DESKTOP-LHB50OE\Tester".
    Bearbeitete Datei: C:\Windows\system32\ieapfltr.dll
    Bearbeitete Datei: C:\Windows\system32\ieapfltr.dll
    Bearbeitete Datei: C:\Windows\system32\iedkcs32.dll
    Bearbeitete Datei: C:\Windows\system32\iedkcs32.dll
            1 Datei(en) verschoben.
            1 Datei(en) verschoben.
    

    Wenn ich jetzt aber nachsehe, dann heißt die Datei noch immer so wie vorher?!(Hab auch aktualisieren gedrückt...)
    Was geht da vor?



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (alle ISO-Standards) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Such mal nach den Begriffen ...

    Folder Virtualization
    File System Redirector
    User Account Control
    Restricted Token


Log in to reply