我有一个在C开发的应用程序。此应用程序跨多个平台支持。我们通过文件传输协议将文件传输到不同的机器或本地机器上的任何其他目录。我想包含一个功能,我可以使用某个临时名称来传输文件,一旦传输完成,我想用正确的名称(实际文件名)重命名该文件。权限被拒绝在Windows上的C中重命名功能
我试过使用简单的rename()函数。它在Unix和Linux机器上运行良好。但它不适用于Windows。它给了我一个错误代码13(权限被拒绝错误)。
的第一件事,我在MSDN查就知道重命名的功能,如果我有权授予一些权限文件等
- 我授予完全权限的文件(可以说是777)。
- 我在其他几篇文章中读到我应该在重命名文件之前关闭文件描述符。我也是这样做的。它仍然会给出同样的错误。
- 很少有其他文章提到关于文件的所有者和应用程序的所有者。该应用程序将以SYSTEM用户身份运行。 (但是,这不应该影响的行为,因为我在我的应用程序尝试同样的重命名功能如下:
此工程从我的应用程序罚款:
rename("C:/abc/aaa.txt","C:/abc/zzz.txt");
但
rename(My_path,"C:/abc/zzz.txt");
不起作用,其中My_path
打印时显示C:/abc/test.txt
。
如何重命名fi乐?我需要它在多个平台上工作。 有没有其他的事情我应该努力使它工作。
我们需要一个完整的,自包含的测试程序,可以重现问题。理想情况下,该程序将创建演示该问题所需的所有文件和目录,但如果这更容易,.bat文件也可以。 – zwol 2012-08-07 06:57:10
我正在尝试在版权软件应用程序的其中一个文件中添加这部分代码。它非常庞大,必须与成千上万的图书馆联系起来。因此,共享任何可执行文件或库是不可能的。 – San 2012-08-07 07:22:18
snippet会是: fun1(datatype1,datatype2) { //获取该设备协议的数据 if(路径不为空)/ *路径指需要重新命名的文件所在的位置*/ { //要在重新分配之前添加重命名 deallocate(path); } } – San 2012-08-07 07:23:03