2017-09-05 102 views
-1

我想将文件复制到需要管理员权限的文件夹中。C++将文件复制到具有管理权限的文件夹中

例子:

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; 
} 

我怎样才能把这些权限将文件复制到这样的文件夹?

谢谢你们

+1

请把MoveFile函数的定义,所以我们可以看到这是怎么回事! – PerelMan

+2

将其标记为与MS-Windows Access控件和文件权限上的完整书籍一样宽泛。 –

+1

@MarwanB'MoveFile'是一个Win32 API函数:https://msdn.microsoft.com/en-us/library/windows/desktop/aa365239(v=vs.85).aspx –

回答

0

您有几种选择:

  1. 运行应用程序作为管理员。这为整个生命周期提供了整个应用程序管理权限。你应该努力不要这样做,除非你的整个应用程序在任何时候都需要管理员权限。否则,尽量使用最少的权限运行。仅在文件拷贝

  2. 获得管理员权限暂时

    • impersonate管理员用户,执行文件的拷贝,并在完成后恢复到原来的用户。

    • 将文件复制逻辑移动到可以使用ShellExecute/Ex("runas")运行的单独进程。

    • 将文件复制逻辑移动到可以使用COM Elevation Moniker提升的COM对象。

+0

你能给我一个代码示例给你的第二选择吗? – PhyToniC

相关问题