C#WIA图像扫描失败,出现HRESULT:0x80070050

| 我希望有人遇到过-我正在尝试使用WIA从文档扫描仪中捕获图像,但是在尝试传输图像结果的随机计算机上-WIA报告\“文件存在。-HRESULT:0x80070050 )\“。在所有出现此问题的计算机上,该软件的初次使用均成功。 我能够成功连接到扫描仪,查询名称,制造商等。 如果已在其他用户帐户下运行代码(使用以管理员身份右键单击运行),我已经确定可以成功扫描图像。但是,在具有提升特权的同一用户帐户下运行代码会导致同一错误。 注意:在Item1.Transfer上发生异常-到目前为止,我还没有为WIA提供文件路径,因此这不能是它所指的文件。
WIA.DeviceManager DeviceManager1 = new WIA.DeviceManagerClass();
WIA.Device Scanner = DeviceManager1.DeviceInfos[i].Connect();

WIA.Item Item1 = null;
foreach (WIA.Item CurrentItem in Scanner.Items) {
    Item1 = CurrentItem;
    break;
}

WIA.ImageFile Image1 = new WIA.ImageFile();

//Attempt To Capture Scan
Image1 = (WIA.ImageFile)Item1.Transfer(WIA.FormatID.wiaFormatJPEG);

//Save To File
Image1.SaveFile(Path.Combine(Path.GetTempPath(), Path.GetRandomFileName() + @\"\\scan\" + DateTime.Now.Ticks + \".jpg\");
最合乎逻辑的答案是WIA在图像捕获过程中存储了一个临时文件(我不知道),并且它无法覆盖以前的扫描。有谁知道这可能在哪里?     
已邀请:
解决了。 事实证明,WIA实际上将捕获的图像作为临时文件存储在“用户”配置文件的temp文件夹中,因此:
Path.GetTempPath()
或C:\\ Users \\ USER_PROFILE \\ AppData \\ Local \\ Temp \\ 文件以imgXXXX.tmp格式存储 在我们的例子中-导致问题的原因(似乎没有在网络上的任何地方记录在案)是因为我们每隔几秒钟就对扫描仪进行一次轮询-创建一个临时文件,因为只有4x,在WIA调试之前,最多可以包含65K临时文件。 设置例程以清除此temp文件夹中的旧图像文件,立即解决了该问题。     
尝试使用WIA从相机设备读取图像时遇到了同样的问题。正确的解决方案是正确处理WIA.ImageFile。这将清理tmp文件。
Marshal.ReleaseComObject(Image1);
我在CodePrjoct上找到了此链接     

要回复问题请先登录注册