[VB.NET] Register rechten

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik ben bezig met het maken van een applicatie die waarden in het register moet aanpassen. Het probleem is echter dat deze ook toegang moet hebben tot HKEY_LOCAL_MACHINE. Het programma wordt uitgevoerd op een gebruikersaccount met beperkte rechten.

Op http://technet.microsoft....ry/cc728310(v=ws.10).aspx heb ik wel kunnen vinden hoe ik deze gebruiker rechten kan geven voor deze sleutels alleen het is de bedoeling dat dit niet handmatig maar in code gedaan wordt. (Tijdens de installatie, hiervoor heb ik zelf een installer gemaakt). Als ik met een code de rechten kan aanpassen van de gelimiteerde gebruiker dan is het dus mogelijk om deze code uit te voeren op een account met administratorrechten.

Op http://vlaurie.com/computers2/Articles/xprunas.htm heb ik een omzeiling gevonden voor het probleem (de "Runas" sectie, onderaan de pagina) alleen heeft dit niet mijn voorkeur gezien mijn applicatie vaker opgestart moet worden en dan zou het wachtwoord van de administrator blijvend opgeslagen staan in een .vbs bestand (waardoor met notepad kinderlijk eenvoudig te achterhalen is wat het wachtwoord van de administrator is).

Op http://msdn.microsoft.com...s.registrypermission.aspx heb ik een artikel gevonden alleen heb ik geen idee hoe ik dit moet implementeren in mijn code. Als het mogelijk is om de rechten hiermee aan te passen wat zou ik dan als code moeten gebruiken?

Op http://msdn.microsoft.com/en-us/library/88b6xhxd(vs.71).aspx staat een hele voorbeeldcode en als ik het goed heb zou ik dat op deze manier moeten gebruiken maar ik vraag het liever toch even na.

code:
1
2
3
4
5
Imports System
Imports System.Security
Imports System.Security.Permissions
Imports System.Collections
Imports Microsoft.VisualBasic


code:
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
Friend Class RegGenerator


    Private myReg As String() = {"HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0", "HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION", "HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\FloatingPointProcessor\0"}
    Private regIndex As Integer = 0
    Public Sub New()
        ResetIndex()
    End Sub 'New
    Public Sub ResetIndex()
        regIndex = 0
    End Sub 'ResetIndex
    ' CreateReg creates a RegistryPermission.
    Public Function CreateReg(ByRef regPerm As RegistryPermission, ByRef reg As String, ByVal rpa As RegistryPermissionAccess) As Boolean
        If regIndex = myReg.Length Then
            regPerm = New RegistryPermission(PermissionState.None)
            reg = ""
            regIndex &= 1
            Return True
        End If
        If regIndex > myReg.Length Then
            regPerm = Nothing
            reg = ""
            Return False
        End If
        reg = myReg(regIndex)
        regIndex = regIndex + 1
        Try
            regPerm = New RegistryPermission(rpa, reg)
            Return True
        Catch e As Exception
            Console.WriteLine(("Cannot create RegistryPermission : " & reg & " " & e.ToString()))
            regPerm = New RegistryPermission(PermissionState.None)
            reg = ""
            Return True
        End Try
    End Function 'CreateReg
    ' End of RegGenerator.
End Class


Geeft bovenstaande code toegang tot:
HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0
HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION
HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\FloatingPointProcessor\0
?

Overige ideeen hoe ik het register kan aanpassen via de limited useraccount of code waarmee ik de gebruiker rechten kan geven zijn welkom!

Kort:
  • Het programma wat meerdere malen gebruikt gaat worden staat op de gelimiteerde account
  • Tijdens de installatie kan ik code uitvoeren op de administrator account
  • Ik zoek een code waarmee het programma op de gelimiteerde account toegang heeft tot HKEY_LOCAL_MACHINE sleutels.
Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • Bolukan
  • Registratie: Oktober 2002
  • Laatst online: 23-08 23:43
Even out-of-the-box (bij gebrek aan technische kennis om je verder te helpen): Tijdens de installatie de gegevens uitlezen en elders bewaren?

Acties:
  • 0 Henk 'm!

  • SKiLLa
  • Registratie: Februari 2002
  • Niet online

SKiLLa

Byte or nibble a bit ?

RunAs maar dan als SYSTEM i.p.v. Administrator inbouwen ?

'Political Correctness is fascism pretending to be good manners.' - George Carlin


Acties:
  • 0 Henk 'm!

  • Rfce
  • Registratie: Oktober 2001
  • Laatst online: 26-09-2024

Rfce

Veni, Vidi, Vici

Applicaties kunnen geen HKLM keys wijzigen als ze onder beperkte usercontent draaien (dat zou nl mooi worden).
Nee, gewoon tijdens install van het pakket de regkey waarden open zetten voor het useraccount. Die install draait nl onder system neem ik aan (heb je er een msi van gemaakt?)

euh...ja


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb het op een andere manier verholpen. De gegevens die aangepast moesten worden heb ik in een database bestand gezet. Werkt ook prima.

@Rfce: de vraag was ook bedoeld hoe ik de keys open kon zetten voor een limited user. dit kon wel via de admin account alleen moest via code en niet via regedit.

Toch bedankt allemaal!

Acties:
  • 0 Henk 'm!

  • BertS
  • Registratie: September 2004
  • Laatst online: 14-04 17:14
Aanvullende info: als je een installatiepakket als bijv. innosetup gebruikt, kun je tijdens de installatie (die als administrator wordt uitgevoerd) een regkey aanmaken in HKLM en de rechten daarvan op everyone zetten. Dan heb je wel toegang tot die key vanuit je app.
Pagina: 1