我目前正在使用Internet Explorer BHO进行工作,该BHO已使用Add-In Express(www.add-in-express.com).NET库以VB.NET编写,并且目标是.NET Framework 2.0。浏览器附加组件通过InnoSetup 5安装程序安装到用户的AppData / Local目录中,该安装程序还处理附加组件的注册。
安装后,InnoSetup安装程序会提升UAC,这是向浏览器注册BHO的可执行文件(由Add-In Express提供)所必需的。
我必须指出,我的.NET经验充其量是最少的-我足够了解该应用程序的代码,但是对操作系统如何处理应用程序一无所知-我将尽力描述该问题。我可以。
我的附件使用的一项功能是Visual Studio的用户设置(通过VS中的“属性”->“设置”部分)。在原始开发机器上的IE中调试插件时,一切正常。
将加载项安装到新计算机上时,每当我的应用程序尝试调用My.Settings.Save()时,我都会收到一个异常。对于相同的问题,我一直在努力在网络上找到其他任何相同的方案。请在下面找到堆栈跟踪:
Exception Source: mscorlib
Exception Type: System.InvalidOperationException
Exception Message: Method failed with unexpected error code 3.
Exception Target Site: CreateInternal
---- Stack Trace ----
System.Security.AccessControl.NativeObjectSecurity.CreateInternal(resourceType As ResourceType, isContainer As Boolean, name As String, handle As SafeHandle, includeSections As AccessControlSections, createByName As Boolean, exceptionFromErrorCode As ExceptionFromErrorCode, exceptionContext As Object)
mscorlib.dll: N 0306 (0x132) IL
System.Security.AccessControl.FileSystemSecurity..ctor(isContainer As Boolean, name As String, includeSections As AccessControlSections, isDirectory As Boolean)
mscorlib.dll: N 0017 (0x11) IL
System.Security.AccessControl.FileSecurity..ctor(fileName As String, includeSections As AccessControlSections)
mscorlib.dll: N 0000 (0x0) IL
System.Configuration.Internal.WriteFileContext.DuplicateTemplateAttributes(source As String, destination As String)
mscorlib.dll: N 0008 (0x8) IL
System.Configuration.Internal.WriteFileContext.DuplicateFileAttributes(source As String, destination As String)
mscorlib.dll: N 0028 (0x1C) IL
System.Configuration.Internal.WriteFileContext.Complete(filename As String, success As Boolean)
mscorlib.dll: N 0018 (0x12) IL
System.Configuration.Internal.InternalConfigHost.StaticWriteCompleted(streamName As String, success As Boolean, writeContext As Object, assertPermissions As Boolean)
mscorlib.dll: N 0070 (0x46) IL
System.Configuration.Internal.InternalConfigHost.System.Configuration.Internal.IInternalConfigHost.WriteCompleted(streamName As String, success As Boolean, writeContext As Object, assertPermissions As Boolean)
mscorlib.dll: N 0000 (0x0) IL
System.Configuration.Internal.DelegatingConfigHost.WriteCompleted(streamName As String, success As Boolean, writeContext As Object, assertPermissions As Boolean)
mscorlib.dll: N 0000 (0x0) IL
System.Configuration.ClientSettingsConfigurationHost.WriteCompleted(streamName As String, success As Boolean, writeContext As Object)
mscorlib.dll: N 0019 (0x13) IL
System.Configuration.UpdateConfigHost.WriteCompleted(streamName As String, success As Boolean, writeContext As Object)
mscorlib.dll: N 0036 (0x24) IL
System.Configuration.MgmtConfigurationRecord.SaveAs(filename As String, saveMode As ConfigurationSaveMode, forceUpdateAll As Boolean)
mscorlib.dll: N 0793 (0x319) IL
System.Configuration.Configuration.SaveAsImpl(filename As String, saveMode As ConfigurationSaveMode, forceSaveAll As Boolean)
mscorlib.dll: N 0036 (0x24) IL
System.Configuration.Configuration.Save()
mscorlib.dll: N 0000 (0x0) IL
System.Configuration.ClientSettingsStore.WriteSettings(sectionName As String, isRoaming As Boolean, newSettings As IDictionary)
mscorlib.dll: N 0219 (0xDB) IL
System.Configuration.LocalFileSettingsProvider.SetPropertyValues(context As SettingsContext, values As SettingsPropertyValueCollection)
mscorlib.dll: N 0219 (0xDB) IL
System.Configuration.SettingsBase.SaveCore()
mscorlib.dll: N 0154 (0x9A) IL
System.Configuration.SettingsBase.Save()
mscorlib.dll: N 0016 (0x10) IL
System.Configuration.ApplicationSettingsBase.Save()
mscorlib.dll: N 0023 (0x17) IL
FindAndRemind.User.DetectUser()
mscorlib.dll: N 0042 (0x2A) IL
FindAndRemind.IEModule.IEModule_DownloadComplete()
mscorlib.dll: N 0151 (0x97) IL
AddinExpress.IE.ADXIEModule.DoDownloadComplete()
mscorlib.dll: N 0010 (0xA) IL
搜索User / AppData目录后,可以看到没有为组织名称创建文件夹。我还阅读了user.config文件,它可以由Internet Explorer自己在Microsoft_Corporation文件夹下创建,尽管它也为空。在我看来,这是一个权限问题,但是由于我缺乏在Windows上编写应用程序的经验,所以我很茫然。
是否每个人都曾遇到过此问题,如果是,您是如何解决的?
提前致谢!
编辑:
我还应该指出,可以关闭该异常,并且该应用程序可以继续运行,但是由于没有保存任何设置数据,因此我的插件本质上有点多余。
编辑2:
不幸的是,不能以管理员模式运行Internet Explorer,因为该加载项是对当前具有20,000+用户群的旧版本的更新。我们的用户涵盖了一系列的技能水平,并且该加载项应在多个操作系统和用户设置中“按原样”运行。
确保已在安装程序包中包含加载项的配置文件。
另外,如果启用了Internet Explorer保护模式,则您的代码无法将任何内容保存到安装了加载项的同一文件夹中的配置文件中。您可以实现自定义配置文件,并将其复制到用户配置文件中的“ Temporary Internet Files \ Low”文件夹中。另一种解决方案是禁用保护模式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句