2013-02-17 417 views
1

嗨任何一个可以建议我怎么能弄清楚这个错误错误说明:从HRESULT异常:0x800A0046(CTL_E_PERMISSIONDENIED)

**Exception from HRESULT: 0x800A0046 (CTL_E_PERMISSIONDENIED)** 

注意,这个错误是不是正在添加的所有文件很少被扔的,同时在文件中写入字符串数据。

请找我正在使用VB.net下面的代码

Dim fso, file 

strResult = "this is the sample string data" 

strPath = it is local path only. 

fso = CreateObject("Scripting.FileSystemObject") 
file = fso.opentextfile(strPath, ForWriting, True) 
file.write(strResult) 
file.Close() 
+0

任何一个可以建议对这个请,我在寻找这么多partals,我力找出我不放心的答案,但是我正在创建的本地系统中的文件,并在其中写,希望它不会出现许可问题,错误还会出现罕见的情况,而不是所有的文件,或者在vb.net中有没有其他方法? – user2054334 2013-02-18 04:52:49

+0

亲爱的家伙亲切的建议有没有什么办法来解决这个问题? – user2054334 2013-02-18 12:00:09

+0

你甚至试过答案或者只是投票吗?所提供的答案将做你需要它做的,否则你为什么不发布你的错误。另外最好在try catch中打包代码,这样你就知道你的问题在哪里了。 – Codexer 2013-02-20 02:18:06

回答

0

错误被抛出,因为要么,你没有权限编辑文件或因为该文件正在使用另一个进程或另一个用户。同样使用传统的FileSystemObject不是一个好主意。使用.NET框架中的托管库,因为它会为您提供更好的错误支持。请参阅下面的示例,了解如何在下面完成同样的事情...

Try 
    File.WriteAllText("Your data", "FILE") 
Catch ex As Exception 
    MsgBox (ex.Message) 'Or however you want to handle this... 
End Try 

谢谢!

0

没有关于您的文件系统是什么样的更多信息,您拥有什么权限以及您想要在程序中使用甚么程序,您几乎无法知道如何为您提供帮助。

但是,由于遗留的DLL与更新的技术混合在一起,例如.Net 1和.Net 4.5,我遇到过这个问题。

.NET 4.5及以上版本的旧DLL在后台管理并确保它们正常运行时很痛苦。他们造成内存泄漏,他们不正确地尊重内存,并且他们在很多方面被硬编码以执行.Net 4.5和更高版本这些日子会变得更好。

我建议您为我们提供您的项目设置和您的COM参考,因为其中之一很可能是您得到此错误的原因。

这是一个消除的过程。一次删除一个引用,注释掉代码,调试等,直到找到导致问题的罪魁祸首的DLL。然后你需要决定是否使用另一个DLL,另一个引用,或者更好的是,首先不要使用这个有问题的DLL。

祝你好运,

相关问题