I am building a tool for a high school that logs application usage and browsed websites.
The program is near to finished, but i run in to an error that i have been trying to solve for weeks now, and it is still even unclear for me in what direction to look to solve the issue.
The problem:
Whenever an Internet Explorer window is the active window, my application wants to read out the current url in the address bar. It can do so by using this code:
objLogURL.Add(IE.LocationURL, IE.LocationURL)
End If End If End If Next IE
shdocvw.dll is entered as reference and imported.
The tool works fine at one classroom with 25 pc's and the schoollibrary with 60 pc's. On the rest of the computers it simply crashes with the following error:
System.IO.FileNotFoundException: Het ophalen van de COM-classfactory voor het onderdeel met CLSID {9BA05972-F6A8-11CF-A442-00A0C90A8F39} is mislukt vanwege de volgende fout: 80070002.
bij SACmonitor.Monitor.Timer1_Tick(Object sender, EventArgs e)
bij System.Windows.Forms.Timer.OnTick(EventArgs e)
bij System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
bij System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
As noticable, the error is in dutch. But im pretty sure that the dutch version of Windows is not the reason for the program failing, because i ran a succesful test on a laptop of a friend of mine, which runs Windows XP Home, dutch.
I also tried
- upgrading & downgrading internet explorer versions
- running every possible windows and even office update findable on failing client machines
- comparing fileaccess, registry activity and settings, and attached dll's with tools from sysinternals
- using other dll versions for critical system files (not a good practice)
- spending hours trying to find possible differences in the systems where shdocvw.dll does work and where it doesn't
For an english report of the same error:
http://forums.microsoft.com/MSDN/ShowPost.aspx PostID=821712&SiteID=1
And the same error can be found in other threads on forums at the web, but none with a solution. I am close at trying to go a different route, trying to use some packet sniffing code that monitors http traffic, so i can filter out the visited websites that way.. but i am not an experienced coder and i have no clue if it would work in VB.net. The more advanced programming languages are simply to hard for me.
If anyone has a hint or a thought.. i'll be refreshing this thread ![]()