2017-09-05 1 views
-1

Ich möchte eine Datei in einen Ordner kopieren, wo ich Admin-Berechtigung benötigen.C++ Datei in Ordner mit Admin-Berechtigungen kopieren

Beispiel:

string oldPath = "C:\\Users\\Sony\\Desktop\\a.txt"; 
string newPath = "C:\\ProgramData\\Microsoft\\Network\\a.txt"; 

int main(){ 
    MoveFile(oldPath.c_str(), newPath.c_str()); 

    // now I have to send the permission, because the file won't be copied 

    return 0; 
} 

Wie kann ich diese Erlaubnis senden Sie eine Datei in einen solchen Ordner zu kopieren?

Danke Jungs

+1

Bitte legen Sie die Definition von Movefile Funktion damit wir sehen können, was los ist! – PerelMan

+2

Das Markieren dieser als zu weit wie die Bücher über MS-Windows-Zugriffskontrolle und Dateiberechtigungen. –

+1

@MarwanB 'MoveFile' ist eine Win32-API-Funktion: https://msdn.microsoft.com/en-us/library/windows/desktop/aa365239(v=vs.85).aspx –

Antwort

1

Führen Sie die .exe Datei als Administrator an.

0

Sie haben ein paar Möglichkeiten:

  1. laufen die App als Admin. Dies gibt der gesamten App Administratorrechte für die gesamte Lebensdauer. Sie sollten sich bemühen, dies möglichst nicht zu tun, es sei denn, Ihre gesamte App benötigt zu jeder Zeit Administratorrechte. Versuchen Sie andernfalls, so weit wie möglich mit den wenigsten Privilegien zu laufen.

  2. Gewinn Admin-Zugriff vorübergehend nur während der Dateikopie:

    • impersonate ein Admin-Benutzer, führen Sie die Datei kopieren und dann auf die ursprünglichen Benutzer wieder zurück, wenn Sie fertig.

    • Verschieben Sie die Dateikopierlogik in einen separaten Prozess, der mit ShellExecute/Ex("runas") erhöht ausgeführt werden kann.

    • Verschieben Sie die Dateikopierlogik in ein COM-Objekt, das unter Verwendung der COM Elevation Moniker ausgeführt werden kann.

+0

können Sie mir ein Codebeispiel für Ihre zweite Wahl geben? – PhyToniC