passt 10 Report post Posted July 20, 2006 Hi NG. W2k3 Server + Win2k, WinXP Clients. Da wir es endlich übers Herz gebracht haben, uns vom größten Teil unserer NT4 Rechner zu trennen, beginne ich mich jetzt ins Thema Anmeldescripts in VBS einzuarbeiten. Wie kann ich innerhalb einer VBS Datei eine Procedur erstellen und auch aufrufen? Folgender Code schlägt leider fehl: ' Ausführen des Scripts: ' CSCRIPT //X MEIN_SKRIPT.VBS Option Explicit On Error Resume Next Dim sRoot, sKey, sValname, sRegTyp as String ' Test sRoot = "HKCU" sKey = "\Software\123TEST321\" sValname = "Personal" sRegTyp = "REG_SZ" SchreibeRegKey(sRoot, sKey, sValName, sRegType) ' Hier wird beim Compilieren ein Fehler anzeigt ' Was auch logisch ist! Aber wie soll ich es stattdessen machen? Sub SchreibeRegKey(Root, Key, Valname, RegTyp) Dim valx Dim WSHShell Set WSHShell = WScript.CreateObject("WScript.Shell") ' WSHShell.RegDelete(Root+key+valname) WSHShell.RegWrite(Root+key+valname) valx = WshShell.ExpandEnvironmentStrings("\\fileserver\123users\%USERNAME%") WSHShell.RegWrite Root+Key+valname, valx, RegTyp WScript.Quit End Sub Ich hoffe, ich bin hier nicht ganz falsch und mir kann jemand helfen. Gruß Peter Quote Share this post Link to post
phoenixcp 10 Report post Posted July 20, 2006 Welcher Fehler wird dir denn angezeigt? Ich habe den groben Verdacht, das selbst der Aufruf deiner Sub aus einer Function oder einer anderen Sub passieren muss, da sonst der Interpreter / Compiler nicht weiß, wo das Ding anfängt und wo es endet. Quote Share this post Link to post
passt 10 Report post Posted July 21, 2006 Sorry, ich komme jetzt erst dazu mich zu melden. Verwende ich c:\windows\system32\CSCRIPT.exe erhalte ich die nur bedingt aussagekräftige Aussage "blabla.vbs(8, 36) Kompilierungsfehler in Microsoft VBScript: Anweisungsende erwartet". Damit kann ich leider nix anfangen. Kopiere ich den Code in VB Editor, der mit MS Office 2000 installiert wird, so erhalte ich beim Debuggen bereits in der zweiten Zeile: On Error Resume Next "Fehler beim Kompilieren: Außerhalb einer Prozedur ungültig" Hm, jetzt bin so schlau wie vorher. Irgendwelche Ideen? Gruß Peter Quote Share this post Link to post
passt 10 Report post Posted July 21, 2006 Ok, jetzt habe ich die richtige als Ursache der Kompilerfehlermeldung lokalisiert. Dim sRoot, sKey, sValname, sRegTyp as String Dies sorgt für den Fehler "Anweisungsende erwartet". Warum nur? Quote Share this post Link to post
phoenixcp 10 Report post Posted July 21, 2006 "Fehler beim Kompilieren: Außerhalb einer Prozedur ungültig" [/Quote] Die Dimensionierung der Variablen solltest du mal lieber in eine Sub oder Function reinpacken. Dann ungefähr so hier: ' Ausführen des Scripts:' CSCRIPT //X MEIN_SKRIPT.VBS Option ExplicitOn Error Resume NextInitSub Init() Dim sRoot, sKey, sValname, sRegTyp as String ' Test sRoot = "HKCU" sKey = "\Software\123TEST321\" sValname = "Personal" sRegTyp = "REG_SZ" SchreibeRegKey(sRoot, sKey, sValName, sRegType) End SubSub SchreibeRegKey(Root, Key, Valname, RegTyp) Dim valx Dim WSHShell Set WSHShell = WScript.CreateObject("WScript.Shell") ' WSHShell.RegDelete(Root+key+valname) WSHShell.RegWrite(Root+key+valname) valx = WshShell.ExpandEnvironmentStrings("\\fileserver\123users\%USERNAME%") WSHShell.RegWrite Root+Key+valname, valx, RegTyp WScript.QuitEnd Sub[/Code] Quote Share this post Link to post
passt 10 Report post Posted July 21, 2006 So, jetzt komme ich Schritt für Schritt weiter. Ich habe bei Borncity's WSH Bazar einen Anfänger-Kurs der Computerbild zu VBScript gefunden ;) VBScript kennt nur den Variablentyp Variant und somit muss man das 'as String' komplett weglassen. Der nächste Kompilierungsfehler lässt aber nicht auf sich warten. Ich darf die Prozedur nicht mit Klammern aufrufen :( Hmrpf, ist das ein getüftel! Quote Share this post Link to post
passt 10 Report post Posted July 21, 2006 @phoenixcp Das sieht zwar eleganter aus, ändert aber nichts am neuen Kompilierungsfehler. Warum müssen alle Programmiersprachen so unterschiedlich sein :( Quote Share this post Link to post
phoenixcp 10 Report post Posted July 21, 2006 Argh.... Warum ist mir das nicht gleich aufgefallen. Lass mal das "as String" weg. In vbScript gibts doch keine Datentypen... Quote Share this post Link to post
passt 10 Report post Posted July 21, 2006 ;) Siehe meine Antwort #6 Quote Share this post Link to post