Jag har en .reg-fil som jag tänkt att importera in i registret via ett logonscript (en vanlig .bat) Precis som med allting annat som har med rättigheter att göra, logga in med en användare som har rätt rättigheter! De är där ju nämligen av ett skäl, just för att inte vilken användare som helst ska få göra vad som helst! Anledningen är att jag använder en 3-part dll som måste finnas på klienten. Rätt (TM) sätt att lösa det på är att paketera dll-filen i ett MSIpaket som du sedan distribuerar via tex AD eller SMS som då får högre rättigheter. Om man kör alternativet vbsfil med run asSkriva till registret, komma runt säkerhet...
Problemet är att jag i en av .regfilerna måste skriva i HKEY_LOCAL_MACHINE och HKEY_CLASSES_ROOT
Det funkar inte om inte användaren har admin/previliegiade rättigheter
Att skriva i HKEY_CURRENT_USER funkar däremot alldeles utmärkt.
Någon som har en susning om hur jag kommer runt problemet?Sv: Skriva till registret, komma runt säkerhet...
Av vilken anledning vill du skriva med en regfil, och av vilken anledning vill du ändra just de värdena på just de platserna?Sv: Skriva till registret, komma runt säkerhet...
Regfilen "Registrerar" dll'en efter jag kopierat dit den.
Sedan så måste det finnas en viss nyckel där man säger vilka URLar den ska ta hand om.
Dll'en är till för att slippa att .doc öppnas i browsern utan istället låta Word öppna det fristående.
LaunchinIE heter den...Sv: Skriva till registret, komma runt säkerhet...
Ett alternativ är att du kör ditt inloggningsskript via VBS och kör installationen av dllfilen med RunAs som admin. problemet med detta är att en användare kan se adminlösenordet om han kikar i VBS-filen, vilket inte är så skoj. Det finns en VBS-krypteringsmojäng, men den har fått dålig kritik!Sv: Skriva till registret, komma runt säkerhet...
Hur lägger man upp det med Run As?
Att admin syns får jag ta...får gömma undan den så gott det går :-)
Jag har en vbsfil:
<code>
Dim fso
Dim WshShell
Dim Dummy
Dim strSourceFile
Dim strDestinationPath
'Set paths
strSourceFile = "\\alla\Gemensam\IT\IE\LaunchinIE.dll"
strDestinationPath = "C:\InetDLL\"
' Create File System Object
Set fso = CreateObject("Scripting.FileSystemObject")
' Create Shellobject
Set WshShell = CreateObject("WScript.Shell")
'Check if folder exists
If Not fso.FolderExists("C:\InetDLL") Then
'Create folder
fso.CreateFolder ("C:\InetDLL")
End If
'Check if LanunchinIE.dll exists in "c:\InetDLL"
If fso.FileExists("C:\InetDLL\LaunchinIE.dll") Then
'Check if the dll is registered
On Error Resume Next
Set Dummy = CreateObject("LaunchinIE.Launch")
If Err <> 0 Then
'If No register
Err.Clear
'Här ska det kollas vilken version av os man har så att regsvr32 funkar
If ver = XP 2000 osv Then
WshShell.Run "COMMAND /C regsvr32 /s c:\InetDLL\LaunchinIE.dll"
Elseif bla bla bla
WshShell.Run "COMMAND /C c:\windows\system\regsvr32 /s c:\InetDLL\LaunchinIE.dll"
End if
Else
'If Yes just kill it
Set Dummy = Nothing
End If
'Clear the Error
Err.Clear
On Error GoTo 0
Else
'Copy the dll to desired folder
fso.CopyFile strSourceFile, strDestinationPath, True
' Register the dll
Err.Clear
'Här ska det kollas vilken version av os man har så att regsvr32 funkar...
If verOS = 2000, xp osv Then
WshShell.Run "COMMAND /C regsvr32 /s c:\InetDLL\LaunchinIE.dll"
ElseIf
WshShell.Run "COMMAND /C c:\windows\system\regsvr32 /s c:\InetDLL\LaunchinIE.dll"
End if
End If
' Allocate some memory
Set WshShell = Nothing
Set fso = Nothing
</code>
Är inte riktigt klar med kolla av version av OS som du ser...
Sedan är jag inte klar med att kalla på Regfilen eller skriva direkt till registret