通过更改c中的权限来制作文件夹锁定软件

时间:2012-11-16 08:56:53

标签: c security permissions dos

我正在创建一个可更改文件夹权限的c可执行文件。

#include<stdio.h>
#include<dos.h>
main()
{
system("cacls foldername /e /p everyone:n");
}

它会生成一个文件,该文件应该存在于文件夹所在的位置,我们必须在编译时添加文件夹名称。 但是当我这样做时

char foldername[15];
printf("Enter the foldername");
scanf("%s",foldername);
system("cacls %s /e /p everyone:n");
然后它不工作....!请帮我这个!!

1 个答案:

答案 0 :(得分:3)

您对system()的来电根本不使用foldername。您需要创建命令字符串,然后调用system()

char foldername[15];
printf("Enter the foldername");
scanf("%s", foldername);

char command[100];
sprintf(command, "cacls %s /e /p everyone:n", foldername);
system(command);

当然,此代码容易受到缓冲区溢出的影响:如果用户在其文件夹名称中输入超过14个字符,则对scanf()的调用会在foldername缓冲区外写入​​,从而导致未定义的行为 - 也许崩溃,也许不是。您的问题标记为C ++,其中std::string为您管理安全的内存动态分配:

using namespace std;

string foldername;
cout << "Enter the folder name: ";
getline(cin, foldername);

ostringstream command;
command << "cacls " << foldername << " /e /p everyone:n";
system(command.str().c_str());

如果你确实在使用C ++,我宁愿采用更安全的方法。