Registry on Vista again

Posted: 02-13-2007, 03:43 PM
I'm asking for help one more time. Below are 2 procedures. The first one is
used in VB 2005 Windows Form project. It works fine on XP, Vista.

Private Sub RegistryReadingTest()
Try
Dim f As New RegistryPermission(RegistryPermissionAccess.Read, _
"HKEY_LOCAL_MACHINE\SOFTWARE\SRS
Enterprises\Coordinator\Settings")
f.Demand()

Dim pRegKey As RegistryKey = Registry.LocalMachine
pRegKey = pRegKey.OpenSubKey("SOFTWARE\SRS
Enterprises\Coordinator\Settings")

Dim val2 As Object
val2 = pRegKey.GetValue("CSSLQ")
TextBox1.Text = val2.ToString()
Catch ex As Exception
MessageBox.Show(ex.Message)

End Try

End Sub
'************************************************* ***********************
The second procedure is used in Windows Service application. The code is the
same except I write the return value into file. This procedure does work on
XP, but returns an error 'object reference not set to an instance of an
object' on Vista Business.
What is wrong with this code. How can I make it work on Vista?

Private Sub RegistryReadingTest()
Try
Dim f As New RegistryPermission(RegistryPermissionAccess.Read, _
"HKEY_LOCAL_MACHINE\SOFTWARE\SRS
Enterprises\Coordinator\Settings")
f.Demand()

Dim pRegKey As RegistryKey = Registry.LocalMachine
pRegKey = pRegKey.OpenSubKey("SOFTWARE\SRS
Enterprises\Coordinator\Settings")
Dim val2 As Object
val2 = pRegKey.GetValue("CSSLQ")
WriteToLog("Connection String From Registry: " &
val2.ToString())
Catch ex As Exception
WriteToLog("Error: " & ex.Message())

End Try
End Sub


Reply With Quote

Responses to "Registry on Vista again"

Stuart
Guest
Posts: n/a
 
Re: Registry on Vista again
Posted: 02-13-2007, 04:13 PM
Where is your logfile written?


"vovan" <someone@vovan.com> wrote in message
news:O3GkGX4THHA.2212@TK2MSFTNGP02.phx.gbl...
> I'm asking for help one more time. Below are 2 procedures. The first one
> is used in VB 2005 Windows Form project. It works fine on XP, Vista.
>
> Private Sub RegistryReadingTest()
> Try
> Dim f As New RegistryPermission(RegistryPermissionAccess.Read,
> _
> "HKEY_LOCAL_MACHINE\SOFTWARE\SRS
> Enterprises\Coordinator\Settings")
> f.Demand()
>
> Dim pRegKey As RegistryKey = Registry.LocalMachine
> pRegKey = pRegKey.OpenSubKey("SOFTWARE\SRS
> Enterprises\Coordinator\Settings")
>
> Dim val2 As Object
> val2 = pRegKey.GetValue("CSSLQ")
> TextBox1.Text = val2.ToString()
> Catch ex As Exception
> MessageBox.Show(ex.Message)
>
> End Try
>
> End Sub
> '************************************************* ***********************
> The second procedure is used in Windows Service application. The code is
> the same except I write the return value into file. This procedure does
> work on XP, but returns an error 'object reference not set to an instance
> of an object' on Vista Business.
> What is wrong with this code. How can I make it work on Vista?
>
> Private Sub RegistryReadingTest()
> Try
> Dim f As New RegistryPermission(RegistryPermissionAccess.Read,
> _
> "HKEY_LOCAL_MACHINE\SOFTWARE\SRS
> Enterprises\Coordinator\Settings")
> f.Demand()
>
> Dim pRegKey As RegistryKey = Registry.LocalMachine
> pRegKey = pRegKey.OpenSubKey("SOFTWARE\SRS
> Enterprises\Coordinator\Settings")
> Dim val2 As Object
> val2 = pRegKey.GetValue("CSSLQ")
> WriteToLog("Connection String From Registry: " &
> val2.ToString())
> Catch ex As Exception
> WriteToLog("Error: " & ex.Message())
>
> End Try
> End Sub
>
Reply With Quote
vovan
Guest
Posts: n/a
 
Re: Registry on Vista again
Posted: 02-13-2007, 04:40 PM
In the same directory as service exe located - c:\MyServices
I think the problem not with log file, becase it's accessible, that
procedure writes to it.
I think this line produces an error:
val2 = pRegKey.GetValue("CSSLQ")

By some reason when it's running from Windows Service app it doesn't work.
From Windows Form project no problem with it.
One more thing - I tried to run Windows Form sample as a regular user
(double click) and it works. Now I decided to try to run it via right
click - run as Administrator. It doesn't work, producing the same error.
So it looks like Service app running with admin previlidges and that code is
not allowed.
Maybe stupid idea, but I think now I need to find the way to lower
previlidges for my service.

Thank you
Vovan

"Stuart" <no@thanks.com> wrote in message
news:66B5CD6F-C76D-4AEB-9DBF-DE1D927EDA90@microsoft.com...
> Where is your logfile written?
>
>
> "vovan" <someone@vovan.com> wrote in message
> news:O3GkGX4THHA.2212@TK2MSFTNGP02.phx.gbl...
>> I'm asking for help one more time. Below are 2 procedures. The first one
>> is used in VB 2005 Windows Form project. It works fine on XP, Vista.
>>
>> Private Sub RegistryReadingTest()
>> Try
>> Dim f As New RegistryPermission(RegistryPermissionAccess.Read,
>> _
>> "HKEY_LOCAL_MACHINE\SOFTWARE\SRS
>> Enterprises\Coordinator\Settings")
>> f.Demand()
>>
>> Dim pRegKey As RegistryKey = Registry.LocalMachine
>> pRegKey = pRegKey.OpenSubKey("SOFTWARE\SRS
>> Enterprises\Coordinator\Settings")
>>
>> Dim val2 As Object
>> val2 = pRegKey.GetValue("CSSLQ")
>> TextBox1.Text = val2.ToString()
>> Catch ex As Exception
>> MessageBox.Show(ex.Message)
>>
>> End Try
>>
>> End Sub
>> '************************************************* ***********************
>> The second procedure is used in Windows Service application. The code is
>> the same except I write the return value into file. This procedure does
>> work on XP, but returns an error 'object reference not set to an instance
>> of an object' on Vista Business.
>> What is wrong with this code. How can I make it work on Vista?
>>
>> Private Sub RegistryReadingTest()
>> Try
>> Dim f As New RegistryPermission(RegistryPermissionAccess.Read,
>> _
>> "HKEY_LOCAL_MACHINE\SOFTWARE\SRS
>> Enterprises\Coordinator\Settings")
>> f.Demand()
>>
>> Dim pRegKey As RegistryKey = Registry.LocalMachine
>> pRegKey = pRegKey.OpenSubKey("SOFTWARE\SRS
>> Enterprises\Coordinator\Settings")
>> Dim val2 As Object
>> val2 = pRegKey.GetValue("CSSLQ")
>> WriteToLog("Connection String From Registry: " &
>> val2.ToString())
>> Catch ex As Exception
>> WriteToLog("Error: " & ex.Message())
>>
>> End Try
>> End Sub
>>
>

Reply With Quote
Larry Linson
Guest
Posts: n/a
 
Re: Registry on Vista again
Posted: 02-14-2007, 06:01 AM
sorry bud, VB 2005 on vista is yet ANOTHER visual fred moment

MS FUCKED YOU ALL GROW A BACKBONE OR DIE LIKE A PUSSY





On Feb 13, 8:40 am, "vovan" <some...@vovan.com> wrote:
> In the same directory as service exe located - c:\MyServices
> I think the problem not with log file, becase it's accessible, that
> procedure writes to it.
> I think this line produces an error:
> val2 = pRegKey.GetValue("CSSLQ")
>
> By some reason when it's running from Windows Service app it doesn't work.
> From Windows Form project no problem with it.
> One more thing - I tried to run Windows Form sample as a regular user
> (double click) and it works. Now I decided to try to run it via right
> click - run as Administrator. It doesn't work, producing the same error.
> So it looks like Service app running with admin previlidges and that code is
> not allowed.
> Maybe stupid idea, but I think now I need to find the way to lower
> previlidges for my service.
>
> Thank you
> Vovan
>
> "Stuart" <n...@thanks.com> wrote in message
>
> news:66B5CD6F-C76D-4AEB-9DBF-DE1D927EDA90@microsoft.com...
>
>
>
> > Where is your logfile written?
>
> > "vovan" <some...@vovan.com> wrote in message
> >news:O3GkGX4THHA.2212@TK2MSFTNGP02.phx.gbl...
> >> I'm asking for help one more time. Below are 2 procedures. The first one
> >> is used in VB 2005 Windows Form project. It works fine on XP, Vista.
>
> >> Private Sub RegistryReadingTest()
> >> Try
> >> Dim f As New RegistryPermission(RegistryPermissionAccess.Read,
> >> _
> >> "HKEY_LOCAL_MACHINE\SOFTWARE\SRS
> >> Enterprises\Coordinator\Settings")
> >> f.Demand()
>
> >> Dim pRegKey As RegistryKey = Registry.LocalMachine
> >> pRegKey = pRegKey.OpenSubKey("SOFTWARE\SRS
> >> Enterprises\Coordinator\Settings")
>
> >> Dim val2 As Object
> >> val2 = pRegKey.GetValue("CSSLQ")
> >> TextBox1.Text = val2.ToString()
> >> Catch ex As Exception
> >> MessageBox.Show(ex.Message)
>
> >> End Try
>
> >> End Sub
> >> '************************************************* ***********************
> >> The second procedure is used in Windows Service application. The code is
> >> the same except I write the return value into file. This procedure does
> >> work on XP, but returns an error 'object reference not set to an instance
> >> of an object' on Vista Business.
> >> What is wrong with this code. How can I make it work on Vista?
>
> >> Private Sub RegistryReadingTest()
> >> Try
> >> Dim f As New RegistryPermission(RegistryPermissionAccess.Read,
> >> _
> >> "HKEY_LOCAL_MACHINE\SOFTWARE\SRS
> >> Enterprises\Coordinator\Settings")
> >> f.Demand()
>
> >> Dim pRegKey As RegistryKey = Registry.LocalMachine
> >> pRegKey = pRegKey.OpenSubKey("SOFTWARE\SRS
> >> Enterprises\Coordinator\Settings")
> >> Dim val2 As Object
> >> val2 = pRegKey.GetValue("CSSLQ")
> >> WriteToLog("Connection String From Registry: " &
> >> val2.ToString())
> >> Catch ex As Exception
> >> WriteToLog("Error: " & ex.Message())
>
> >> End Try
> >> End Sub- Hide quoted text -
>
> - Show quoted text -

Reply With Quote
vovan
Guest
Posts: n/a
 
Re: Registry on Vista again
Posted: 02-14-2007, 05:21 PM
The problem is related to Vista Registry Virtualization.
Regular Windows program running under regular user credentials let's say
need to read from "HKEY_LOCAL_MACHINE\SOFTWARE\SRS Enterprises\Coordinator"
In reality during the installation this hive was not created. Instead of it
there is a new location in HKEY_USERS.
But Windows program can see that new location and read from it.
Windows Service will still look for "HKEY_LOCAL_MACHINE\SOFTWARE\SRS
Enterprises\Coordinator", not for a new location.
So, temporarily I added manually values into HKEY_USERS. And now my service
works under Vista

Vovan

"vovan" <someone@vovan.com> wrote in message
news:O3GkGX4THHA.2212@TK2MSFTNGP02.phx.gbl...
> I'm asking for help one more time. Below are 2 procedures. The first one
> is used in VB 2005 Windows Form project. It works fine on XP, Vista.
>
> Private Sub RegistryReadingTest()
> Try
> Dim f As New RegistryPermission(RegistryPermissionAccess.Read,
> _
> "HKEY_LOCAL_MACHINE\SOFTWARE\SRS
> Enterprises\Coordinator\Settings")
> f.Demand()
>
> Dim pRegKey As RegistryKey = Registry.LocalMachine
> pRegKey = pRegKey.OpenSubKey("SOFTWARE\SRS
> Enterprises\Coordinator\Settings")
>
> Dim val2 As Object
> val2 = pRegKey.GetValue("CSSLQ")
> TextBox1.Text = val2.ToString()
> Catch ex As Exception
> MessageBox.Show(ex.Message)
>
> End Try
>
> End Sub
> '************************************************* ***********************
> The second procedure is used in Windows Service application. The code is
> the same except I write the return value into file. This procedure does
> work on XP, but returns an error 'object reference not set to an instance
> of an object' on Vista Business.
> What is wrong with this code. How can I make it work on Vista?
>
> Private Sub RegistryReadingTest()
> Try
> Dim f As New RegistryPermission(RegistryPermissionAccess.Read,
> _
> "HKEY_LOCAL_MACHINE\SOFTWARE\SRS
> Enterprises\Coordinator\Settings")
> f.Demand()
>
> Dim pRegKey As RegistryKey = Registry.LocalMachine
> pRegKey = pRegKey.OpenSubKey("SOFTWARE\SRS
> Enterprises\Coordinator\Settings")
> Dim val2 As Object
> val2 = pRegKey.GetValue("CSSLQ")
> WriteToLog("Connection String From Registry: " &
> val2.ToString())
> Catch ex As Exception
> WriteToLog("Error: " & ex.Message())
>
> End Try
> End Sub
>

Reply With Quote
RobinS
Guest
Posts: n/a
 
Re: Registry on Vista again
Posted: 02-14-2007, 07:58 PM
Thanks for letting us know how you got it to work.

Robin S>
------------------------------
"vovan" <someone@vovan.com> wrote in message
news:uE1peyFUHHA.920@TK2MSFTNGP05.phx.gbl...
> The problem is related to Vista Registry Virtualization.
> Regular Windows program running under regular user credentials let's say
> need to read from "HKEY_LOCAL_MACHINE\SOFTWARE\SRS
> Enterprises\Coordinator"
> In reality during the installation this hive was not created. Instead of
> it there is a new location in HKEY_USERS.
> But Windows program can see that new location and read from it.
> Windows Service will still look for "HKEY_LOCAL_MACHINE\SOFTWARE\SRS
> Enterprises\Coordinator", not for a new location.
> So, temporarily I added manually values into HKEY_USERS. And now my
> service works under Vista
>
> Vovan
>
> "vovan" <someone@vovan.com> wrote in message
> news:O3GkGX4THHA.2212@TK2MSFTNGP02.phx.gbl...
>> I'm asking for help one more time. Below are 2 procedures. The first one
>> is used in VB 2005 Windows Form project. It works fine on XP, Vista.
>>
>> Private Sub RegistryReadingTest()
>> Try
>> Dim f As New
>> RegistryPermission(RegistryPermissionAccess.Read, _
>> "HKEY_LOCAL_MACHINE\SOFTWARE\SRS
>> Enterprises\Coordinator\Settings")
>> f.Demand()
>>
>> Dim pRegKey As RegistryKey = Registry.LocalMachine
>> pRegKey = pRegKey.OpenSubKey("SOFTWARE\SRS
>> Enterprises\Coordinator\Settings")
>>
>> Dim val2 As Object
>> val2 = pRegKey.GetValue("CSSLQ")
>> TextBox1.Text = val2.ToString()
>> Catch ex As Exception
>> MessageBox.Show(ex.Message)
>>
>> End Try
>>
>> End Sub
>> '************************************************* ***********************
>> The second procedure is used in Windows Service application. The code is
>> the same except I write the return value into file. This procedure does
>> work on XP, but returns an error 'object reference not set to an
>> instance of an object' on Vista Business.
>> What is wrong with this code. How can I make it work on Vista?
>>
>> Private Sub RegistryReadingTest()
>> Try
>> Dim f As New
>> RegistryPermission(RegistryPermissionAccess.Read, _
>> "HKEY_LOCAL_MACHINE\SOFTWARE\SRS
>> Enterprises\Coordinator\Settings")
>> f.Demand()
>>
>> Dim pRegKey As RegistryKey = Registry.LocalMachine
>> pRegKey = pRegKey.OpenSubKey("SOFTWARE\SRS
>> Enterprises\Coordinator\Settings")
>> Dim val2 As Object
>> val2 = pRegKey.GetValue("CSSLQ")
>> WriteToLog("Connection String From Registry: " &
>> val2.ToString())
>> Catch ex As Exception
>> WriteToLog("Error: " & ex.Message())
>>
>> End Try
>> End Sub
>>
>
>

Reply With Quote
Jimmy Brush
Guest
Posts: n/a
 
Re: Registry on Vista again
Posted: 02-18-2007, 12:59 AM
Hello,

If you are developing your application to make it work for Windows Vista
under a standard user account, you should STOP writing to HKLM and instead
write to HKCU directly.

This will solve both problems - the program not running correctly as
administrator, and the service failing.

In the next version of Windows, virtualization will probably not be there -
so your application will always fail with the error you are seeing now on
the next version of windows, regardless of whether it is being ran as a
standard user or not, if you do not fix it now.


--
- JB
Microsoft MVP - Windows Shell/User

Windows Vista Support Faq
http://www.jimmah.com/vista/

Reply With Quote
 
LinkBack Thread Tools Display Modes
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Vista registry reference johanafm Windows Vista Performance & Maintenance 3 06-25-2007 09:46 PM
Read from Registry on Vista vovan Windows Vista Security 11 03-13-2007 08:57 PM
Registry on Vista again vovan Windows Vista Administration 6 02-18-2007 12:59 AM
Vista x64 Defrag program and registry cleaner rapierau Windows Vista Performance & Maintenance 0 08-13-2006 08:48 AM
Vista Registry Layout LuisNeto Windows Vista Performance & Maintenance 2 06-18-2006 01:33 PM


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90