Hot News:

Unser Angebot:

  Foren auf CAD.de
  VBasic / vb.net / vbs / wsh
  Mit wshshell in Registry schreiben

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
Autor Thema:  Mit wshshell in Registry schreiben (3165 mal gelesen)
Tobsen
Mitglied
IT -Systemkaufmann


Sehen Sie sich das Profil von Tobsen an!   Senden Sie eine Private Message an Tobsen  Schreiben Sie einen Gästebucheintrag für Tobsen

Beiträge: 557
Registriert: 14.06.2002

erstellt am: 10. Mai. 2007 09:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallöle,

ich möchte mit einem vbs-Script Daten in die Registry schreiben.
Eigentlich klappt das auch, aber, wenn ich im Namen einen Pfad mit Backslash stehen habe, erkennt er diesen nicht.

Ein Beispiel:

Code:

Set wshshell = CreateObject("WScript.Shell")
key = "HKCU\Software\Autodesk\Inventor\RegistryVersion11.0\System\Preferences\File\" 
Name = "P:Programme\Autodesk\Inventor 11\Bin\Inventor.exe:TemplateDir"
Wert = "P:\programme\autodesk\inventor 11\Templates"
wshshell.RegWrite key & Name, Wert

So wie ich das geschrieben habe, kann es IMHO auch nicht funktionieren, da er durch das & key und Name zusammen setzt und nur den letzten Wert "Inventor.exe:TemplateDir" als Name einträgt.
Aber ein "," anstatt des "&" nimmt er nicht an. Warum?

Kann ich über diese Methode überhaupt einen Namen als Zeichenfolge erstellen?

MSDN sagt:

Zitat:
RegWrite will write at most one DWORD to a REG_BINARY value. Larger values are not supported with this method.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/678e6992-ddc4-4333-a78c-6415c9ebcc77.asp


Was mache ich falsch?

Grüße
Tobi

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Axel.Strasser
Ehrenmitglied V.I.P. h.c.
Selbstständig im Bereich PLM/CAx



Sehen Sie sich das Profil von Axel.Strasser an!   Senden Sie eine Private Message an Axel.Strasser  Schreiben Sie einen Gästebucheintrag für Axel.Strasser

Beiträge: 4107
Registriert: 12.03.2001

Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!

erstellt am: 10. Mai. 2007 10:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Tobsen 10 Unities + Antwort hilfreich

1) Versuch mal HKCU auszuschreiben, da hatte ich auch schon Probleme.
2) Es muss der komplette Pfad einzeln angelegt werden, d.h. die Struktur wird nicht automatisch generiert

Ansonsten bin ich darauf umgestiegen regfiles zu generieren und diese einzulesen, ist IMHOIn my humble oppinion (Meiner Meinung nach) einfacher und sicherer:

WshShell.Run "Regedit.exe /s " & Source_dir & "regfile.reg", 1, true

Leg den key an, schreib ihn raus, dann hast Du die ganze Struktur und
Du kannst Dir da dann auch Templates aufbauen und diese vor dem Ausführen ändern, sowas in der Art:

Code:

set objFile = fso.OpenTextFile(Source_dir & "test.reg", ForReading)
strText = objFile.ReadAll
objFile.Close

strText = replace(strText, "@PFAD@", Source_Path)
   
set objFile = fso.OpenTextFile(Temp_Path & "\test.reg", ForWriting, true)
objFile.WriteLine strText
objFile.Close


Mit dem Löschen ist es dann auch so eine Sache da ist ein regfile auch einfacher:

Code:

DeleteKey "HKEY_CLASSES_ROOT\test"

sub DeleteKey (key)
' Erzeugt eine temporäre Reg-Datei mit Informationen zum
' Löschen des Schlüssels, importiert diese über die Run-
' Methode und löscht die temporäre Datei wieder.
const tmpFolder = 2 ' Temp-Ordner des Systems
const ForWriting = 2 ' Schreiben

dim oFso, oFile
dim tmp, path

set WshShell = createObject ("WScript.Shell")
' FileSystemObject-Objekt erzeugen
set oFso = createObject("Scripting.FileSystemObject")
tmp = oFso.GetTempName ' Temporären Dateinamen anfordern   
path = oFso.GetSpecialFolder(tmpFolder)  ' Pfad holen
tmp = path & "\" & tmp    ' erzeuge Pfad + Temp-Dateiname

' öffne Datei zum Schreiben
set oFile = oFso.OpenTextFile(tmp, ForWriting, true)
' Schreibe Datei
oFile.WriteLine ("REGEDIT4")
oFile.WriteLine ("")
oFile.WriteLine ("[-" & key & "]")
oFile.WriteLine ("@=""""")
oFile.Close ' Datei schließen
set oFile = nothing ' Objekt freigeben

' Reg-Datei importieren
WshShell.Run "Regedit.exe /s " & tmp, 1, true
oFso.DeleteFile tmp ' und löschen
end sub


So kannst Du auch komplette Strukturen löschen.

Aber Du weisst ja: Direkte Registry Funktionen können Dein System unbrauchbar machen  , vorallem wenn Du Strukturen löschst.

Axel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz