Hallo,
Gibt es einen Trick, doch den Explorer mit dem passenden Ordner zu öffnen?
Wenn ja, welchen?
Das Mozilla XPCOM interface und JavaScript. Mit allen seinen unschönen, MS-ActiveX ähnlichen, sicherheitskritischen Nebeneffekten (siehe unten).
Wie gesagt, es muß nur aus einer lokalen Datei (file:///c:/bla/fasel.html) heraus auf einer Handvoll Rechner der Kollegen funktionieren. Es muß nicht aus einer Internet-Seite heraus funktionieren.
Siehe http://developer.mozilla.org/en/docs/Code_snippets:Running_applications, Beispiel:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Beschreibung der Seite</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript">
<!--
function execute_app(complete_app_path, args) {
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
try{
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath(complete_app_path);
var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
process.init(file);
process.run(true, args, args.length);
} catch(e2) {
alert(e1);
}
} catch(e1) {
alert(e1);
}
}
//-->
</script>
</head>
<body>
<button onclick="execute_app('C:\\Winnt\\explorer.exe', new Array('C:\\www\\docs\\'))">StartApp</button>
</body>
</html>
Im Kontext des file://-Protokolls aufgerufen, wirft das eine Sicherheitswarnung, die man mit [Erlauben] bzw. [Ablehnen] beantworten kann. Mit einem Haken bei "Diese Entscheidung merken" kann ab nun _diese Ressource_ immer auf UniversalXPConnect zugreifen. Zu netscape.security.PrivilegeManager.enablePrivilege siehe http://www.mozilla.org/projects/security/components/jssec.html#privs. Der Eintrag erfolgt in der prefs.js im Nutzerprofil von Mozilla. Dort steht dann:
user_pref("capability.principal.codebase.p0.granted", "UniversalXPConnect");
user_pref("capability.principal.codebase.p0.id", "file://");
user_pref("capability.principal.codebase.p0.subjectName", "");
oder eben
user_pref("capability.principal.codebase.p0.denied", "UniversalXPConnect");
user_pref("capability.principal.codebase.p0.id", "file://");
user_pref("capability.principal.codebase.p0.subjectName", "");
Bei weiteren Ressourcen wird aus p0 dann p1, p2 usw. Mir ist es allerdings noch nicht gelungen einen Zusammenhang zwischen diesen p0, p1 usw. und den Ressourcen herzustellen. Will man die Frage nach [Erlauben] oder [Ablehnen] wieder haben, muss man alle Zeilen
user_pref("capability.principal.codebase.px
löschen.
viele Grüße
Axel