错误描述:来自HRESULT的异常:0x800A0046(CTL_E_PERMISSIONDENIED)

时间:2013-02-17 06:36:45

标签: asp.net vb.net

您可以提出任何建议我如何解决此错误

 **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()

2 个答案:

答案 0 :(得分: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

谢谢!

答案 1 :(得分:0)

如果没有关于您的文件系统的更多信息,您拥有什么权限,以及您在计划中尝试做什么和使用什么,那么很少有人知道如何帮助您。

但是,我过去遇到过这个问题,原因是遗留的DLL与最近的技术混合在一起 - 例如.Net 1与.Net 4.5。

.Net 4.5及更高版本下的旧DLL在管理并确保它们正常运行的背后是一种痛苦。它们导致内存泄漏,它们不能正确地尊重内存,而且它们在许多方面都是硬编码的,以便做到.Net 4.5及以上版本可能会做得更好。

我建议您向我们提供您的项目设置和COM引用,因为其中一个很可能是您收到此错误的原因。

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

祝你好运,