OVH Cloud OVH Cloud

ShellExecute permission refusée

13 réponses
Avatar
ParazaR
Bonjour,

J'essaye de lancer un programme (genre notepad.exe) à partir d'un script au
moyen de la commande ShellExecute mais j'obtient systématiquement le message
: "permission refusée" dans la fenêtre d'erreur javascript.
Une idée ?

Merci

10 réponses

1 2
Avatar
Bul
bonjour,
shellexecute ? en J[ava]Script ?
on peut voir le script ?
car on peut ( exclusif windows+internet explorer )
lancer des exécutables au travers des ActiveX
mais un ShellExecute ?
@+
Avatar
ParazaR
bonjour,
shellexecute ? en J[ava]Script ?
on peut voir le script ?
car on peut ( exclusif windows+internet explorer )
lancer des exécutables au travers des ActiveX
mais un ShellExecute ?
@+


J'avais trouvé ces scripts sur le net :
function LaunchSomething() {
var launcher = new ActiveXObject("Shell.Application");
launcher.ShellExecute("c:windowssystem32notepad.exe", "", "", "open",
"0");
}

et

function gogogo() {
ShellExecute(null,"open","notepad.exe",null,"c:windowssystem32",SW_SHOW)
}

Avatar
ParazaR
et ca aussi :

<head>
<object ID="SW" ViewAsText
CLASSID="clsid:13709620-C279-11CE-A49E-444553540000"></object>
</head>

<input type="button" value="OUVRIR ACCESS"
onclick="SW.ShellExecute('C:Program FilesMicrosoft
OfficeOfficeMSACCESS.exe');">
Avatar
Eric
Par sécurité, j'espère que tu ne peux pas faire ça depuis n'importe
quelle page !

Je pense que LA chose à regarder, c'est comment tu appelles la page.

En local, 127.0.0.1, ou en double cliquant sur un point HTM ?

Dans quelle zone se poistionne MSIE ? Internet, Sites de confiance ?
Avatar
ParazaR
"Eric" a écrit dans le message de news:

Par sécurité, j'espère que tu ne peux pas faire ça depuis n'importe
quelle page !

Je pense que LA chose à regarder, c'est comment tu appelles la page.

En local, 127.0.0.1, ou en double cliquant sur un point HTM ?

Dans quelle zone se poistionne MSIE ? Internet, Sites de confiance ?


Je n'utilise bien sur cette fonction que sur mon propre serveur web sur mon
PC en localhost.
J'ai essayé en mettant site local en sécurité la plus basse mais ca ne
fonctionne pas quand meme.

Avatar
Bul
ah, je comprend mieux...
je ne connaissais pas "shell.application" qui chez moi aussi est refusé.
sûr que ça existe ? sûr de la syntaxe d'appel ?
je ne connaissais que les méthodes suivantes :

<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY><b>
<table>
<tr><td>fichier</td>
<td><input type="file"
name="fic"
dir=rtl
sized/></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td>nom d'un exécutable</td>
<td><input value="avec classid"
type="button"
onclick='lancerclassid(fic.value);'/></td></tr>
<tr><td>nom exécutable ou fichier ( lancera le programme associé, celui utilisé par "Ouvrir avec" )</td>
<td><input value="avec cmd /c ou start"
type="button"
onclick='lancerstart(fic.value);'/></td></tr>
<tr><td>nom d'un éxécutable uniquement si sous un répertoire accessible directement ( "par path" : windows,mes documents ... )</td>
<td><input value="avec run"
type="button"
onclick='lancerrun(fic.value);'/></td></tr>
<tr><td>lancer word</td>
<td><input value="avec word (si *.doc,*.rtf,*.txt... ?)"
type="button"
onclick="lancerword(fic.value);"/></td></tr>
</table>
<script Type="Text/JavaScript"><!--------
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function lancerword(doc) //~~ Lancer une application ~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{
var app_word = new ActiveXObject("Word.Application");
app_word.Application.Visible = true;
try {
app_word.documents.open(doc);
}
catch (erreur) {
}
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function lancerclassid(exe) //~~ Active'X ~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{
var p = window.createPopup();
var b = p.document.body;
b.innerHTML = '<OBJECT CLASSID="CLSID:12345678-1234-1234-1234-123456789ABC"' +
' CODEBASE="'+exe+'"></OBJECT>';}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function lancerstart(exe) //~~ Run ~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{
var w = new ActiveXObject("WScript.Shell");
//w.run ('start "'+exe+'"'); // windows 98
w.run ('cmd /c "'+exe+'"'); // windows XP
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function lancerrun(exe) //~~ Exe ~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{
var w = new ActiveXObject("WScript.Shell");
try {
w.run (exe,1,true);
}
catch(erreur) {
}
}
//--------></script>
</BODY></HTML>


qui elles, fonctionnent.
je cherche plus d'infos sur shell.application.
@+
Avatar
Bul
ça :

var objShell = new ActiveXObject("Shell.Application");
objShell.ShellExecute("Notepad","" ,"" , "open", 1);

ça marche aussi
@+
Avatar
ParazaR
"Bul" a écrit dans le message de news:
dpj9l9$ido$
ça :

var objShell = new ActiveXObject("Shell.Application");
objShell.ShellExecute("Notepad","" ,"" , "open", 1);

ça marche aussi
@+



Ca marche mais toujours le problème de sécurité chez moi.

Avatar
ParazaR
"Bul" a écrit dans le message de news:
dpj94o$i22$
ah, je comprend mieux...
je ne connaissais pas "shell.application" qui chez moi aussi est refusé.
sûr que ça existe ? sûr de la syntaxe d'appel ?
je ne connaissais que les méthodes suivantes :

<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY><b>
<table>
<tr><td>fichier</td>
<td><input type="file"
name="fic"
dir=rtl
sized/></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td>nom d'un exécutable</td>
<td><input value="avec classid"
type="button"
onclick='lancerclassid(fic.value);'/></td></tr>
<tr><td>nom exécutable ou fichier ( lancera le programme associé, celui
utilisé par "Ouvrir avec" )</td>
<td><input value="avec cmd /c ou start"
type="button"
onclick='lancerstart(fic.value);'/></td></tr>
<tr><td>nom d'un éxécutable uniquement si sous un répertoire accessible
directement ( "par path" : windows,mes documents ... )</td>
<td><input value="avec run"
type="button"
onclick='lancerrun(fic.value);'/></td></tr>
<tr><td>lancer word</td>
<td><input value="avec word (si *.doc,*.rtf,*.txt... ?)"
type="button"
onclick="lancerword(fic.value);"/></td></tr>
</table>
<script Type="Text/JavaScript"><!--------
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function lancerword(doc) //~~ Lancer une application ~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{
var app_word = new ActiveXObject("Word.Application");
app_word.Application.Visible = true;
try {
app_word.documents.open(doc);
}
catch (erreur) {
}
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function lancerclassid(exe) //~~ Active'X ~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{
var p = window.createPopup();
var b = p.document.body;
b.innerHTML = '<OBJECT
CLASSID="CLSID:12345678-1234-1234-1234-123456789ABC"' +
' CODEBASE="'+exe+'"></OBJECT>';}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function lancerstart(exe) //~~ Run ~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{
var w = new ActiveXObject("WScript.Shell");
//w.run ('start "'+exe+'"'); // windows 98
w.run ('cmd /c "'+exe+'"'); // windows XP
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function lancerrun(exe) //~~ Exe ~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{
var w = new ActiveXObject("WScript.Shell");
try {
w.run (exe,1,true);
}
catch(erreur) {
}
}
//--------></script>
</BODY></HTML>


qui elles, fonctionnent.
je cherche plus d'infos sur shell.application.
@+



Génial, j'ai trouvé mon bonneur dans la fonction lancerrun en modifiant
juste un paramètre de sécrité dans IE.
Pour ce qui est de la syntaxe de ce que j'essayais avant je l'ai trouvé dans
des sites sur le javascript.

Merci en tout k, ca marche maintenant :)

Avatar
ParazaR
Génial, j'ai trouvé mon bonneur dans la fonction lancerrun en modifiant
juste un paramètre de sécrité dans IE.
Pour ce qui est de la syntaxe de ce que j'essayais avant je l'ai trouvé
dans des sites sur le javascript.

Merci en tout k, ca marche maintenant :)


Sinon maintenant j'ai un autre problème (pas vitale mais bon je demande
ausis on sais jamais :)

Le programme que j'exécute est le notepad.exe mais je lui donne en paramètre
un fichier texte qui se trouve sur un PC distant auquel il accède
correctement si ce n'est que l'accès à ce PC est limité, c'est à dire
qu'abituellement en passant directement par le notepad j'ai la fenetre
d'authentification qui s'ouvre me demandant login et password hors là avec
le lancement par javascript il me dit simplement qu'il n'y a pas accès.
Cela fonctionne si j'ai préalablement ouvert de manière conventionnelle le
fichier car après Windows conserve l'authentification en mémoire mais si
j'essaye d'ouvrir ce fichier la première fois par le javascript j'ai le
message d'erreur.

Une idée ?

1 2