Avatar billede koden Novice
09. august 2006 - 08:40 Der er 17 kommentarer og
2 løsninger

Hvordan bruge regfil med forskelligt indhold

Jeg har denne reg fil som skal køres hos forskellige brugere.
Simpelt nok.

Men BRUGERNAVN skal udfyldes med brugerns brugerid.

Kan jeg lave en bat fil istedet, som prompter bruger for at taste logonid og som så sætter logonid ind i reg filen og kører den????


Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\IBM\Content Manager\8.x\Client\General\Directories]
"Cache"="C:\\Documents and Settings\\BRUGERNAVN\\Application Data\\IBM\\Content Manager\\WORK"
Avatar billede mcgoat Nybegynder
09. august 2006 - 08:54 #1
Måske et VBScript?

Har ikke testet det her godt nok, men det er sikkert nemt at rette til :)

Dim result
Dim WSHShell
Dim Line1
Dim Line2
Set WSHShell = WScript.CreateObject("WScript.Shell")
result = InputBox(Message,Title,"Born", 100, 100)

Line1 = "Windows Registry Editor Version 5.00
Line2 = "[HKEY_CURRENT_USER\Software\IBM\Content Manager\8.x\Client\General\Directories]"Cache"="C:\\Documents and Settings\\BRUGERNAVN\\Application Data\\IBM\\Content Manager\\WORK""

Set myFSO = CreateObject("Scripting.FileSystemObject")
Set WriteStuff = myFSO.OpenTextFile("minfil.reg", 8, True)
WriteStuff.WriteLine(Line1)
WriteStuff.WriteLine(Line2)
WriteStuff.Close
SET WriteStuff = NOTHING
SET myFSO = NOTHING

Set oShell = CreateObject("WScript.Shell")
oShell.Run "minfil.reg", 0, True
Avatar billede mcgoat Nybegynder
09. august 2006 - 08:55 #2
hov.. og så udskifte BRUGERNAVN med indhold af result selvfølgelig
Avatar billede koden Novice
09. august 2006 - 09:10 #3
øhhh...hvis man nu ikke kender noget som helst til VBscript :-))
Avatar billede mcgoat Nybegynder
09. august 2006 - 09:15 #4
så prøver jeg lige at lave det :)
Avatar billede koden Novice
09. august 2006 - 09:18 #5
Det lyder jo dejligt...
Er VB ligesom bat, noget man laver i et notepad og gemmer i bestemt format?
Avatar billede koden Novice
09. august 2006 - 09:19 #6
hvorfor er der egentlig dobbelt \\ brugernavn linjen?? skulle det ikke være enkelt \ ?
Avatar billede mcgoat Nybegynder
09. august 2006 - 09:29 #7
næsten alt programmering bruger \ som en escape char, så derfor bliver man nødt til at lave 2 :P..

Og ja, vbs er ligesom en bat fil du laver i notepad, den hedder bare .vbs bagefter isted for .bat.


run.bat:

@echo off
Start regme.vbs
Start minfil.reg


regme.vbs:

Dim result
Dim WSHShell
Dim Line1
Dim Line2
Dim Line3
Dim Line4
Dim Line5
Set WSHShell = WScript.CreateObject("WScript.Shell")
result = InputBox("Skriv dit brugerID","Skriv BrugerID","", 100, 100)

Line1 = "Windows Registry Editor Version 5.00"
Line2 = ""
Line3 = "[HKEY_CURRENT_USER\Software\IBM\Content Manager\8.x\Client\General\Directories]"
Line4 = """Cache""=""C:\\Documents and Settings\\" & result & "\\Application Data\\IBM\\Content Manager\\WORK"""
Line5 = ""

Set myFSO = CreateObject("Scripting.FileSystemObject")
Set WriteStuff = myFSO.OpenTextFile("minfil.reg", 8, True)
WriteStuff.WriteLine(Line1)
WriteStuff.WriteLine(Line2)
WriteStuff.WriteLine(Line3)
WriteStuff.WriteLine(Line4)
WriteStuff.WriteLine(Line5)
WriteStuff.Close
SET WriteStuff = NOTHING
SET myFSO = NOTHING





Se om det ikke skulle virke :)
Avatar billede mcgoat Nybegynder
09. august 2006 - 09:33 #8
du kan også ændre:

Start minfil.reg

Til

Start Regedit.exe /s minfil.reg

så den ikke kommer og spørger om man er sikker på at genne i reg :)
Avatar billede mcgoat Nybegynder
09. august 2006 - 10:35 #9
var det noget der kunne bruges?
Avatar billede ejvindh Ekspert
09. august 2006 - 10:39 #10
Med dette vbs-script, slipper du for spørgsmålet undervejs :-)

Dim Wshshell, WshNetwork, user
Set WshShell = Wscript.CreateObject("Wscript.Shell")
Set WshNetwork = createobject( "wscript.network" )
user=WshNetwork.username

Wshshell.RegWrite "HKEY_CURRENT_USER\Software\IBM\Content Manager\8.x\Client\General\Directories\Cache", "C:\\Documents and Settings\\" & user & "\\Application Data\\IBM\\Content Manager\\WORK", "REG_SZ"
Avatar billede mcgoat Nybegynder
09. august 2006 - 10:44 #11
RegWrite ... smart :) kendte jeg ikke

men det kommer jo an på om "user" er den han skal have fat på, eller om andre skal kunne skrive sig ind :)
Avatar billede ejvindh Ekspert
09. august 2006 - 11:09 #12
Nu er HKEY_CURRENT_USER jo i sig selv bruger-specifik, så det vil ikke hjælpe noget at skrive andre brugere ind i denne nøgle. Fordi når de andre brugere logger sig ind på computeren, vil det være en anden hive-fil, der fungerer som HKEY_CURRENT_USER ;-)

Men hvis det af én eller anden grund alligevel ønskes, at kunne indtaste et alternativ til den faktiske bruger, kan man gøre det med følgende script (minimerer risikoen for fejlindtastning):

Dim Wshshell, WshNetwork, usr, user
Set WshShell = Wscript.CreateObject("Wscript.Shell")
Set WshNetwork = createobject( "wscript.network" )
usr=WshNetwork.username
user = InputBox("Skriv dit brugerID","Skriv BrugerID", usr, 100, 100)

Wshshell.RegWrite "HKEY_CURRENT_USER\Software\IBM\Content Manager\8.x\Client\General\Directories\Cache", "C:\\Documents and Settings\\" & user & "\\Application Data\\IBM\\Content Manager\\WORK", "REG_SZ"
09. august 2006 - 11:59 #13
Psssst: Nu forventer du at brugerens "Documents and Settings" ligger på C:\ -
Hvad med at bruge systemvariablen
%USERPROFILE%
Avatar billede ejvindh Ekspert
09. august 2006 - 12:49 #14
Jeg svarer nu bare på spørgerens spørgsmål, hvor det kun er brugernavnet der ønskes som variabel *S*

Jeg tænkte også på, at bruge det, der i vbs svarer til userprofile, men ulempen er, at så får du ikke dobbelt-backslash hele vejen.
Avatar billede ejvindh Ekspert
09. august 2006 - 13:28 #15
Hvis scriptet også skal være åben for variation i hvilket drev, styresystemet ligger på, kan det gøres således:

MED SPØRGSMÅL:

Dim Wshshell, WshNetwork, WshEnv, usr, user, home
Set WshShell = Wscript.CreateObject("Wscript.Shell")
Set WshNetwork = createobject( "wscript.network" )
Set WshEnv = WshShell.Environment("Volatile")
usr=WshNetwork.username
user = InputBox("Skriv dit brugerID","Brugernavn", usr, 100, 100)
home = WshEnv("homedrive")
Wshshell.RegWrite "HKEY_CURRENT_USER\Software\IBM\Content Manager\8.x\Client\General\Directories\Cache", home & "\\Documents and Settings\\" & user & "\\Application Data\\IBM\\Content Manager\\WORK", "REG_SZ"


UDEN SPØRGSMÅL:

Dim Wshshell, WshNetwork, WshEnv, user, home
Set WshShell = Wscript.CreateObject("Wscript.Shell")
Set WshNetwork = createobject( "wscript.network" )
Set WshEnv = WshShell.Environment("Volatile")
user=WshNetwork.username
home = WshEnv("homedrive")
Wshshell.RegWrite "HKEY_CURRENT_USER\Software\IBM\Content Manager\8.x\Client\General\Directories\Cache", home & "\\Documents and Settings\\" & user & "\\Application Data\\IBM\\Content Manager\\WORK", "REG_SZ"
Avatar billede koden Novice
09. august 2006 - 15:43 #16
Puha...for en som mig der dårligt kan lave bat filer :-))
Nå men det ser spændende ud.
Er VBscript det jeg skal lære, hvis jeg vil lave små programmer der kan lidt af hvert??
Er VB bare et skridt højere end bat filer og findes der noget endnu bedre???

Hvordan lærer man VB bedst/nemmest?
Avatar billede ejvindh Ekspert
09. august 2006 - 16:01 #17
Det første du skal lære er at skelne mellem VB og VBscript ;-)

VBscript (Visual basic scripting) er et scriptsystem, som har mange flere muligheder end batch. Og som giver et mere professionelt udseende (pga windows-udseendet). Men Vbscript har også mange begrænsninger. Et mere effektivt programmeringssprog (som stadig er rimelig nemt at lære) er fx Visual Basic. Men her skal du så ud i at have fat i et compilerprogram. Medmindre du bruger dot-net, som jeg dog ikke ved så meget om.

Jeg vil sige at vbscript er allerede noget sværere end batch. Så hvis du har problemer med batch, så skal du nok indstille dig på, at du skal læse en del, inden du får hold på vbscript :-). Og måske skulle du overveje at tage skridtet videre til VB, Java eller C++ med det samme. Da der er mange flere muligheder i disse sprog...

Arne_v har skrevet en udmærket artikel, der introducerer til forskellige programmeringssprog. Han beskæftiger sig dog ikke med script-sprogene:
http://www.eksperten.dk/artikler/251

Jeg har lært vbscript ved learning by doing, kombineret med denne side:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/ddfa5183-d458-41bc-a489-070296ced968.asp
Avatar billede ejvindh Ekspert
10. august 2006 - 10:26 #18
Tja, hvorfor gøre det kompliceret, når man kan gøre det simpelt. Denne batch-fil kan jo sådan set også gøre det (uden spørgsmål):

@echo off
echo Windows Registry Editor Version 5.00 >regfix.reg
echo. >>regfix.reg
echo [HKEY_CURRENT_USER\Software\IBM\Content Manager\8.x\Client\General\Directories] >>regfix.reg
echo "Cache" = "%systemdrive%\\Documents and Settings\\%username%\\Application Data\\IBM\\Content Manager\\WORK" >>regfix.reg
Start %windir%\Regedit.exe /s regfix.reg
del regfix.reg
Avatar billede koden Novice
10. august 2006 - 10:31 #19
Hæ hæ.. ja du har ret ejvindh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester