当权限被拒绝时 std::ofstream 不显示错误 C++

2024-01-23

当 path = "c:\" 时,以下代码不会写入文件 c:\err.txt,因为权限被拒绝。但它不会同时产生错误。相反,它输出“OK”。

如何检查权限是否允许写入?

#include <cstdlib>
#include <iostream>
#include <fstream>

using namespace std;

bool writeLineToErr(string path, string err_line){
  std::ofstream outfile(path+"err.txt", std::ios_base::app);

  if(!outfile){
      cout<<"Error 1 "+path+"err.txt"+" can't open file!";
      return false;
  }

  if(outfile.fail()){
       cout<<"Error 2 "+path+"err.txt"+" can't open file!";
      return false;
  }
  outfile << err_line << endl;

  cout<<"OK";
  outfile.close();
  return true;
}

int main(int argc, char** argv) {

    writeLineToErr("c:\\","Some Line");
    return 0;
}

我想说你的代码可以工作并且写入操作实际上已经完成,但为了它,在写入后也添加一个检查:

outfile << err_line << endl;
if(outfile.fail()) cout << "Error3\n";
else cout<<"OK";

在我的系统上,我会得到你的Error 1 ... can't open file如果文件未打开并成功写入。

Edit:或者您正在运行 WindowsCompatibility Files虚拟化还活跃吗?如果是这样,该文件可能位于虚拟商店,不是真实的C:\err.txt path.

例子:C:\Users\username\AppData\Local\VirtualStore

如果你在那里找到它,你可能还会在那里找到很多其他东西。至少几年前当我遇到类似问题时我是这样做的。我决定手动移动(使用管理员权限)我的一些旧程序放在那里的几个重要文件,然后关闭虚拟商店。我找不到一个好的、简单的 Microsoft 官方链接来了解如何关闭文件和注册表虚拟化现在也许这会做:

注册表编辑:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\创建一个DWORD带有名字的钥匙EnableVirtualization并赋予它值0。如果密钥已经存在,但设置为非零的值,请更改它。

这里还有更多:UAC组策略设置和注册表项设置 https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/dd835564(v=ws.10)#BKMK_Virtualize

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当权限被拒绝时 std::ofstream 不显示错误 C++ 的相关文章

  • 检查两个数是否是彼此的排列?

    给定两个数字 a b 使得 1 例如 123 是 312 的有效排列 我也不想对数字中的数字进行排序 如果您指的是数字的字符 例如 1927 和 9721 则 至少 有几种方法 如果允许排序 一种方法是简单地sprintf将它们放入两个缓冲
  • 是否可以强制 XMLWriter 将元素写入单引号中?

    这是我的代码 var ptFirstName tboxFirstName Text writer WriteAttributeString first ptFirstName 请注意 即使我使用 ptFirstName 也会以双引号结束 p
  • 获取按下的按钮的返回值

    我有一个在特定事件中弹出的表单 它从数组中提取按钮并将标签值设置为特定值 因此 如果您要按下或单击此按钮 该函数应返回标签值 我怎样才能做到这一点 我如何知道点击了哪个按钮 此时代码返回 DialogResult 但我想从函数返回 Tag
  • 从父类调用子类方法

    a doStuff 方法是否可以在不编辑 A 类的情况下打印 B did stuff 如果是这样 我该怎么做 class Program static void Main string args A a new A B b new B a
  • 使闭包捕获的变量变得易失性

    闭包捕获的变量如何与不同线程交互 在下面的示例代码中 我想将totalEvents 声明为易失性的 但C 不允许这样做 是的 我知道这是错误的代码 这只是一个例子 private void WaitFor10Events volatile
  • 监听文件夹和文件(更改)

    可以直接在 PHP 或 Node 上监听文件夹和文件的更改 通过事件 还是我需要创建自己的方法来执行此操作 Example 我需要听文件夹 user 如果我将一些文件添加到该目录中 PHP 或 Node 会收到信息并运行PathEvent
  • C#:如何防止主窗体过早显示

    在我的 main 方法中 我像往常一样启动主窗体 Application EnableVisualStyles Application SetCompatibleTextRenderingDefault false Application
  • Json.NET - 反序列化接口属性引发错误“类型是接口或抽象类,无法实例化”

    我有一个类 其属性是接口 public class Foo public int Number get set public ISomething Thing get set 尝试反序列化Foo使用 Json NET 的类给我一条错误消息
  • 如何返回 json 结果并将 unicode 字符转义为 \u1234

    我正在实现一个返回 json 结果的方法 例如 public JsonResult MethodName Guid key var result ApiHelper GetData key Data is stored in db as v
  • 从路径中获取文件夹名称

    我有一些路c server folderName1 another name something another folder 我如何从那里提取最后一个文件夹名称 我尝试了几件事 但没有成功 我只是不想寻找最后的 然后就去休息了 Thank
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • clang 实例化后静态成员初始化

    这样的代码可以用 GCC 编译 但 clang 3 5 失败 include
  • C++ 复制初始化和直接初始化,奇怪的情况

    在继续阅读本文之前 请阅读在 C 中 复制初始化和直接初始化之间有区别吗 https stackoverflow com questions 1051379 is there a difference in c between copy i
  • C++ fmt 库,仅使用格式说明符格式化单个参数

    使用 C fmt 库 并给定一个裸格式说明符 有没有办法使用它来格式化单个参数 example std string str magic format 2f 1 23 current method template
  • Process.Start 阻塞

    我正在调用 Process Start 但它会阻止当前线程 pInfo new ProcessStartInfo C Windows notepad exe Start process mProcess new Process mProce
  • ASP.NET MVC 6 (ASP.NET 5) 中的 Application_PreSendRequestHeaders 和 Application_BeginRequest

    如何在 ASP NET 5 MVC6 中使用这些方法 在 MVC5 中 我在 Global asax 中使用了它 现在呢 也许是入门班 protected void Application PreSendRequestHeaders obj
  • 如何在 C++ BOOST 中像图形一样加载 TIFF 图像

    我想要加载一个 tiff 图像 带有带有浮点值的像素的 GEOTIFF 例如 boost C 中的图形 我是 C 的新手 我的目标是使用从源 A 到目标 B 的双向 Dijkstra 来获得更高的性能 Boost GIL load tiif
  • 限制C#中的并行线程数

    我正在编写一个 C 程序来生成并通过 FTP 上传 50 万个文件 我想并行处理4个文件 因为机器有4个核心 文件生成需要更长的时间 是否可以将以下 Powershell 示例转换为 C 或者是否有更好的框架 例如 C 中的 Actor 框
  • 防止索引超出范围错误

    我想编写对某些条件的检查 而不必使用 try catch 并且我想避免出现 Index Out of Range 错误的可能性 if array Element 0 Object Length gt 0 array Element 1 Ob
  • 恢复上传文件控制

    我确实阅读了以下帖子 C 暂停 恢复上传 https stackoverflow com questions 1048330 pause resume upload in c 使用 HTTP 恢复上传 https stackoverflow

随机推荐

  • DrawingManager.setDrawingMode(null) 导致过多的递归

    请看看这个小提琴 http jsfiddle net HoffZ Zu55b http jsfiddle net HoffZ Zu55b 为什么它会导致错误 太多递归 drawMan setDrawingMode null drawMan
  • LocationManager 每分钟更新一次,消​​耗大量电池电量

    我有一些类似于以下的代码 LocationManager m LocationManager context getSystemService Context LOCATION SERVICE Criteria c new Criteria
  • 简单的html dom:如何获取没有特定属性的标签

    我想获取 class 属性等于 someclass 的标签 但仅获取那些未定义属性 id 的标签 I tried以下 基于此答案 但不起作用 html gt find someclass id Note 我在用着简单的 HTML DOM 类
  • 如何比较两个数组的所有元素?

    我有两个大约 1000 行和 1000 列的大数组 我需要比较这些数组的每个元素 如果相应的元素相等 则将 1 存储在另一个数组中 我可以用 for 循环来做到这一点 但这需要很长时间 我怎样才能更快地做到这一点 给出的答案都是正确的 我只
  • WCF 服务合同中使用soapAction="" 进行多项操作?

    我需要创建一项将由第三方 回调 的服务 因此 我需要遵守他们的 WSDL 他们的 WSDL 定义了所有操作soapAction 所以我的服务也需要做同样的事情 不幸的是 我收到错误 操作A和 乙有 相同的动作 每一次操作 必须具有独特的行动
  • Keras 简单 RNN 实现

    我在尝试编译具有一个循环层的网络时发现了问题 第一层的维度似乎存在一些问题 因此我对 RNN 层在 Keras 中如何工作的理解存在一些问题 我的代码示例是 model add Dense 8 input dim 2 activation
  • 使用 rspec 和 devise sign_in env 进行集成测试

    我正在使用配置为使用omniauth facebook登录集成的设备 当拨打电话时sign in方法来自我的spec request我得到的测试 undefined method env for nil NilClass spec desc
  • Android 免费和付费,具有不同的功能

    我知道开发应用程序的免费和付费版本的最佳方法是拥有一个包含程序主要部分的库项目 然后 免费和付费项目将使用该库项目 这使得免费和付费项目拥有不同的资源 但是 我的问题是我们如何限制免费应用程序中的功能 或将其扩展为付费应用程序 例如 我的免
  • Python 2 与 3。相同的输入,不同的结果。 MD5 哈希值

    Python 3 代码 def md5hex data return hex string of md5 of the given string h MD5 new h update data encode utf 8 return b2a
  • Scala Spark - 处理层次结构数据表

    我有带有树结构的层次结构数据模型的数据表 例如 这是一个示例数据行 Id name parentId path depth 55 Canada null null 0 77 Ontario 55 55 1 100 Toronto 77 55
  • JDBC Hibernate - Mysql 连接错误

    我的 Ubuntu 11 10 桌面上有一个本地 mysql 服务器 主机名 本地主机 用户名 根 密码 root 数据库名称 CBS 我真的很困惑 因为当我使用 访问 mysql 时terminal mysql administrator
  • Highcharts:添加自定义图像按钮

    我想在高图表上添加图像按钮 到目前为止 我已经成功创建了一个图像按钮并在其上附加了一个单击事件 但问题是 图像 sun png 位于图表的左侧 图像按钮右对齐 工具栏的默认位置 有什么解决办法吗 exporting buttons popU
  • 就地处理(无重定向)401 未经授权?

    QUESTION 有什么简单的方法可以直接返回 401 并登录页面 避免 302 重定向 当IAuthorizationFilter我的 IIS 7 0 上的 ASP NET MVC 5 应用程序失败 我必须实现什么基础设施才能使其正常工作
  • 如何判断任务是否已被“观察”?

    这是后续这个问题 https stackoverflow com q 33086371 2674222 我还读过斯蒂芬 托布的 任务和未处理的异常 http blogs msdn com b pfxteam archive 2009 05
  • 在SQL中插入空白行数

    使用 SQL 查询 我需要在结果中包含空白行以使每组 family id 等于 4 行 SELECT ROW NUMBER OVER PARTITION BY family id ORDER BY family id AS rowNum f
  • 使用 jQuery 更改单击的表格行的颜色

    我需要你的帮助 我怎样才能使用 jQuery 更改表中所选行的背景颜色 对于本例 我们使用 css 类 highlighted 如果再次单击同一行 请将其更改回默认颜色 白色 选择 css 类 nonhighlighted table bo
  • unixODBC (DB2) + PHP + CentOS 的段错误

    经过两天的战斗 我尝试在这里寻求帮助 我正在使用 unixODBC 2 2 11 在 CentOS 5 4 服务器上使用 DB2 iSeries 和 PHP 5 3 我猜是因为 PHP 从 5 1 升级到 5 3 我让 PHP 在某些查询上
  • 如何使用Python加密大文件?

    我正在尝试加密大于 1GB 的文件 我不想把所有内容都读到记忆中 我选择 Fernet cryptography fernet 来完成此任务 因为它是最受推荐的 比非对称解决方案更快 我生成了密钥 然后我创建了一个脚本来加密 key Fer
  • XCTest - 在自定义坐标上使用捏合手势使用 XCUIElement 进行 UI 测试?

    假设我有一个带有 UI 的应用程序 如下图所示 我们还假设蓝色视图的行为类似于地图 其他颜色是其他可交互的视图 我需要做一个 XCTest 我需要 缩小 我厌倦的蓝色视图缩放捏 https developer apple com docum
  • 当权限被拒绝时 std::ofstream 不显示错误 C++

    当 path c 时 以下代码不会写入文件 c err txt 因为权限被拒绝 但它不会同时产生错误 相反 它输出 OK 如何检查权限是否允许写入 include