none
如何自动处理“访问 XXX 时遇到共享冲突。”的对话框 RRS feed

  • 问题

  • winXP系统,我在遍历修改某文件夹下的图片时遇到的,不知道哪个软件导致的,出现了“访问 xxx.jpg 时遇到共享冲突。”。百度后,都是说是多线程问题,但我并未使用多线程,也没有定时器,每个CFile在结束时也及时的close了。目前只能认为其他软件导致的冲突。

    // 打开文件
    	CFile destFile;
    	CString destFileName(L"D:\\test.jpg");
    	int retval = destFile.Open(destFileName, CFile::modeWrite|CFile::typeBinary|CFile::shareDenyNone);
    	if (!retval)
    	{
    		return;
    	}

    由于无法重现,而且在点击“确定”按钮后并不影响程序的继续运行,所以我并不太关心具体原因。

    我想知道如何避免弹出这个对话框,遇到共享冲突时直接自动的跳过冲突的文件。谢谢!


    我是快乐的小鱼^_^

    2014年8月22日 3:52

全部回复

  • 您这段操作文件的代码是在什么情况下调用的?这段代码会调用很多次吗?比如在一个while/for循环中?

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    2014年8月23日 2:45
    版主
  • 在一个while循环里,通过CFileFind遍历文件夹的所有文件。由于是单线程,是不会出现自己多次访问同一文件的情况。

    我是快乐的小鱼^_^

    2014年8月25日 1:43
  • 你好:

          我觉得一般的方法没有办法避免这个对话框的。不知道是什么软件导致的共享冲突,也许有些第三方软件可以查出来,而且会不会是杀毒软件的原因,有杀毒软件的话关掉试一下。

    我个人建议还是要fix这个问题,不能忽略掉这个对话框的。也许你可以贴更多的关于file的代码出来看看。

    Shu Hu


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.


    • 已编辑 Shu 2017 2014年8月25日 10:00
    2014年8月25日 9:02
  • CFileFind m_find;
    	CString getURL;
    	BOOL bFind = m_find.FindFile(strPath);
    	while (bFind)
    	{
    		bFind = m_find.FindNextFile();        
    		if (!m_find.IsDots())
    		{
    			if (!m_find.IsDirectory())
    			{
    				getURL = m_find.GetFilePath();
    				
    // 打开文件
    	CFile destFile;
    	CString destFileName(url);
    	int retval = destFile.Open(destFileName, CFile::modeWrite|CFile::typeBinary|CFile::shareDenyNone);
    	if (!retval)
    	{
    		return false;
    	}
    	
    // 文件处理(省略)
    	
    
    	// 关闭文件
    	destFile.Close();
    			}
    		}
    	}
    
    	m_find.Close();

    我是快乐的小鱼^_^

    2014年8月26日 1:58
  • 呃……再自己顶一下,没人解决就算了- -.

    我是快乐的小鱼^_^

    2014年9月2日 4:40
  • 你有试过用第三方软件查下什么软件用incompatibility模式打开你的文件了吗?从你提供的代码来看没有什么问题,因为看不到你对图片进行了什么处理,例如改了图片文件名?

    每次处理时都弹出的对话框?点击确定后,处理是成功的吗?因为你说对程序没影响。有试过用禁止其他进程访问的其他模式去Open图片文件吗?通过这些可能可以缩小问题的所在的

    范围。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年9月2日 9:03
  • 我并不太关心具体原因。

    我想知道如何避免弹出这个对话框,遇到共享冲突时直接自动的跳过冲突的文件。谢谢!


    我是快乐的小鱼^_^

    2014年9月3日 4:07