Windows 在登录时自动启动时的 C++ 文件权限

标签 c++ file io registry pipe

问题:我的 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/

相关文章:

file - 文件系统写入缓冲区通常在几秒后被刷新?

c - 查找超过 1 个输入字符串的长度

C++将输入文件行解析为对象数组

c++ - g++ 中 ">"之前的预期主表达式,但在微软编译器中没有

c++ - BOOST_NO_EXCEPTIONS 是否保证与 -fno-exceptions 兼容?

c++ - 粘贴形成了一个无效的处理 token '.'

c++ - gSOAP 到 WCF。应用程序/soap+xml;字符集=utf-8

java - 如果未调用 System.gc(),则 File.delete() 不会删除新文件

java - 加载并显示文件夹中的所有图像

C编程。文件 I/O、链接列表和结构