问题:我的 C++ 程序在重启后无法写入文件,因为它被拒绝访问。
该程序被添加到注册表中的以下位置,从而在启动期间启用它:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
代码中的以下代码片段与导致问题的代码片段类似:
ofstream myfile;
myfile.open ("example.txt", ios:app);
myfile << "Writing this to a file.\n";
myfile.close();
因为这段代码在一个循环中运行,文件被反复打开和关闭,但是当计算机重新启动时,程序似乎失去了对它的文件权限,并且 .open 表示它得到了一个访问被拒绝的错误文件。
这里有什么问题?为什么程序在没有管理员权限的情况下由我启动时运行,但 Windows 启动时却不运行?
最佳答案
据我了解,问题不在于 C++ 库,而在于 Windows 运行应用程序时您的应用程序所拥有的权利。因此,请尝试以下操作:
1) 为您的 exe 文件创建快捷方式;
2) 在 HKEY_CURRENT_USER\...\Run
中将应用程序名称从 *.exe
更改为 *.lnk
(只是为了运行借助快捷方式的应用程序);
3) 在“高级安全设置”部分的快捷方式属性中,将 OWNER 更改为 SYSTEM。
也许这有帮助。
关于Windows 在登录时自动启动时的 C++ 文件权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28667481/