Anzeige

Am Puls von Microsoft

Anzeige

System .js-Dateien erstellen keinen Registry-Eintrag, Probleme mit Windows Based Script Host

mctommson

kennt sich schon aus
Hoi!

Ich habe von PC-Welt ein kleines .js-Script heruntergeladen, welches mir einen Eintrag ins Kontextmenü hinzufügen soll.
Ich habe das Script in die Ordner Windows, System32 und SysWOW64 hinein kopiert, da ich nicht wusste, wo genau es hin soll.

Wenn ich das Script ausführen will, welches in der Registry einen Eintrag hinzufügen würde, bekomme ich jedoch eine Fehlermeldung:

Windows Script Host
Skript: C:\Windows\SysWOW64\pcwFlist.js
Zeile: 55
Zeichen: 3
Fehler: Ungültige Wurzel in Registrierungsschlüssel "HKCR\Directory\shell\pcwFlist\".
Code: 80070005
Quelle: WshShell.RegWrite

Da ich die selbe Fehlermeldung bei einem anderen Script auch hatte (nicht von PCW, aber auch mit dem Befehl RegWrite drin), nehme ich an, dass ich allgemein ein Problem mit dem Windows Script Host habe. Da kein einziger Schlüssel je automatisch in die Registry hinzugefügt wurde, denke ich mir, dass der Dienst vielleicht defekt sein könnte, die Berechtigungen fehlen oder ähnliches.

Hat jemand eine Ahnung, warum das Script bei mir nicht funktioniert?

Habe es hier in den Spoiler geschrieben!
/* Script name: pcwFlister */
/* Purpose: Erstellt über den neu angelegten Kontextmenüpunkt */
/* "Lister" aus den Dateinamen der Dateien im */
/* übergebenen Verzeichnis eine Dateiliste */
/* im Text-Format und schreibt diese automatisch in die */
/* Zwischenablage */
/* Author: David G. Wolski (rashaba@walla.co.il) */
/* Lizenz: GNU Public License (The GNU General Public License - GNU Project - Free Software Foundation (FSF)) */

//Ein paar allgemeine Objekte, die das Script benötigt:
var oWs = new ActiveXObject("WScript.Shell");
var oFs = new ActiveXObject("Scripting.FileSystemObject");
var wobinich = WScript.ScriptFullName;
var strliste="";

//Der Dateiname des übergebenen Ordners.
//Die Argumente kommen in Jscript als Collection
var objArgs = WScript.Arguments;
var arglenth = objArgs.length;


//Die folgende Routine läuft ab, wenn die Anwendung
//ohne Parameter gestartet wurde. Das Script installiert,
//oder de-installiert sich in diesem Fall selbst.
var fileext = "Directory";

if (arglenth == 0 && KeyExists("HKCR\\"+fileext+"\\shell\\pcwFlist\\") == false) {
InstallScript();
WScript.Quit();
}

if (arglenth == 0 && KeyExists("HKCR\\"+fileext+"\\shell\\pcwFlist\\") == true) {
RemoveScript();
WScript.Quit();
}

//Falls Argumente übergeben werden und das Script installiert ist, folgt die eigentliche Aktion, die eine Dateiliste aus dem Ordnerinhalt er
if (arglenth == 1 && KeyExists("HKCR\\"+fileext+"\\shell\\pcwFlist\\") == true) {
var oIE = new ActiveXObject("InternetExplorer.Application");
f = oFs.GetFolder(objArgs(0));
var fnum = new Enumerator(f.Files);
for (;!fnum.atEnd(); fnum.moveNext()) {
strliste = strliste + fnum.item().Name+"\r\n";
}
oIE.Visible = false;
oIE.Navigate("about:blank");
while (oIE.ReadyState != 4) {WScript.Sleep(300);}
oIE.document.parentWindow.clipboardData.setData("text", strliste);
oIE.Quit();
}


//Die Funktion InstallScript ist die Installationsroutine
function InstallScript() {
oWs.RegWrite("HKCR\\"+fileext+"\\shell\\pcwFlist\\", "Dateiliste");
oWs.RegWrite("HKCR\\"+fileext+"\\shell\\pcwFlist\\command\\", "wscript.exe \"" + wobinich + "\" \"\%L\"");
WScript.Echo(WScript.ScriptFullName + ' installiert.\nIm Kontextmenü aller Verknüpfungen steht nun der neue Menüpunkt \"Dateiliste\" bereit. Die Auswahl dieses Menüpunkts kopiert den Ordnerinhalt als Dateiliste in die Zwischenablage.');
}

//RemoveScript ist die Routine zum Entfernen des Scripts
function RemoveScript() {
oWs.RegDelete("HKCR\\"+fileext+"\\shell\\pcwFlist\\command\\");
oWs.RegDelete("HKCR\\"+fileext+"\\shell\\pcwFlist\\");
WScript.Echo(WScript.ScriptFullName + " de-installiert.");
}

//KeyExists überprüft, ob ein Schlüssel in der Registry existiert
function KeyExists(key) {
var findstate,E;
findstate = true;
try {oWs.RegRead(key);}
catch(E) {findstate = false;}
return findstate;
}

Danke euch!
Lg,
Tommy!
 
Anzeige
AW: .js-Dateien erstellen keinen Registry-Eintrag, Probleme mit Windows Based Script Host

Hast du es als Administrator ausgeführt?
 
AW: .js-Dateien erstellen keinen Registry-Eintrag, Probleme mit Windows Based Script Host

Kopiere das Script in einen normalen Ordner, z. B. unter Dokumente und führe es dann nochmals aus. Dann wird es auch funktionieren. Du kannst ohne ausreichende Rechte kein Script in einem Systemordner ausführen.
 
AW: .js-Dateien erstellen keinen Registry-Eintrag, Probleme mit Windows Based Script Host

Hat leider nicht funktioniert.

Die Möglichkeit, das Script als Administrator auszuführen, gibt es im Kontextmenü nicht. Da gibts nur Öffnen, Öffnen mit und Bearbeiten.

Ein Verschieben in den Dokumente Ordner und das dortige Ausführen hat nix gebracht.
 
Anzeige
Oben