C++将文件复制到具有管理权限的文件夹中
问题描述:
我想将文件复制到需要管理员权限的文件夹中。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;
}
我怎样才能把这些权限将文件复制到这样的文件夹?
谢谢你们
答
运行.exe
文件为管理员。
答
您有几种选择:
运行应用程序作为管理员。这为整个生命周期提供了整个应用程序管理权限。你应该努力不要这样做,除非你的整个应用程序在任何时候都需要管理员权限。否则,尽量使用最少的权限运行。仅在文件拷贝
-
获得管理员权限暂时:
impersonate管理员用户,执行文件的拷贝,并在完成后恢复到原来的用户。
将文件复制逻辑移动到可以使用
ShellExecute/Ex("runas")
运行的单独进程。将文件复制逻辑移动到可以使用COM Elevation Moniker提升的COM对象。
+0
你能给我一个代码示例给你的第二选择吗? – PhyToniC
请把MoveFile函数的定义,所以我们可以看到这是怎么回事! – PerelMan
将其标记为与MS-Windows Access控件和文件权限上的完整书籍一样宽泛。 –
@MarwanB'MoveFile'是一个Win32 API函数:https://msdn.microsoft.com/en-us/library/windows/desktop/aa365239(v=vs.85).aspx –