登录时由Windows自动启动时的C++文件权限
问题描述:
问题:我的C++程序在重新启动后无法写入文件,因为它被拒绝访问。登录时由Windows自动启动时的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表示它获得了Acess Denied错误文件。
这里有什么问题?如果程序在没有管理员权限的情况下启动时运行得如何,但在Windows启动时没有运行该程序?
答
据我所知,问题不在于C++ libs,而在于你的应用程序在Windows上运行它的权限。因此,请尝试以下操作:
1)为您的exe文件创建快捷方式;
2)HKEY_CURRENT_USER\...\Run
将应用程序名称从*.exe
更改为*.lnk
(仅用于通过快捷方式运行应用程序);
3)在高级安全设置部分的快捷方式属性中将OWNER更改为SYSTEM。
也许这有助于。
答
"example.txt"
与您的工作目录相关,在启动时可能会有所不同。添加一个硬编码路径来测试这个假设。
坏主意。将自己已知的bug代码作为“SYSTEM”运行是一种安全风险。 – MSalters 2015-02-23 08:33:31
我同意,从安全的角度来看,这不是一个完美的解决方案,但如果它工作并没有其他选择,它可以谨慎使用 – VolAnd 2015-02-23 08:44:16