L'exécution d'un fichier .com par double-click est lancé grâce à la
correspondance entre l'extension .com et le programme à utiliser pour cette
extension. Ces infos se trouvent dans la base de registre dans la sous clé
"HKEY_CLASSES_ROOT / .com" qui nous donne la donnée "comfile" puis la sous
clé "HKEY_CLASSES_ROOT / comfile". Mais sous cette dernière clé on trouve
dans "shell / open / command" la valeur "%1 %" sans avoir le nom du
programme qui permet le lancement des ".com" . Quel est ce programme qui
doit être implicite car non précisé?
Dans le message news:ccdqtb$pgl$ , HD s'est ainsi exprimé:
Bonjour,
L'exécution d'un fichier .com par double-click est lancé grâce à la correspondance entre l'extension .com et le programme à utiliser pour cette extension. Ces infos se trouvent dans la base de registre dans la sous clé "HKEY_CLASSES_ROOT / .com" qui nous donne la donnée "comfile" puis la sous clé "HKEY_CLASSES_ROOT / comfile". Mais sous cette dernière clé on trouve dans "shell / open / command" la valeur "%1 %" sans avoir le nom du programme qui permet le lancement des ".com" . Quel est ce programme qui doit être implicite car non précisé?
Il y'a la même chose pour les "exefile"...
C'est pourtant clair ! ;-) Le programme associé à un fichier .exe , .com, .bat, .cmd, ... c'est le fichier LUI-MÊME ! D'où le "%1" qui représente le fichier, suivi du "%*" qui représente l'ensemble des paramètres éventuels.
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org http://www.bellamyjc.org *
Dans le message news:ccdqtb$pgl$1@biggoron.nerim.net ,
HD <hd@anti.spam.fr> s'est ainsi exprimé:
Bonjour,
L'exécution d'un fichier .com par double-click est lancé grâce à la
correspondance entre l'extension .com et le programme à utiliser pour
cette extension. Ces infos se trouvent dans la base de registre dans
la sous clé "HKEY_CLASSES_ROOT / .com" qui nous donne la donnée
"comfile" puis la sous clé "HKEY_CLASSES_ROOT / comfile". Mais sous
cette dernière clé on trouve dans "shell / open / command" la valeur
"%1 %" sans avoir le nom du programme qui permet le lancement des
".com" . Quel est ce programme qui doit être implicite car non
précisé?
Il y'a la même chose pour les "exefile"...
C'est pourtant clair ! ;-)
Le programme associé à un fichier .exe , .com, .bat, .cmd, ... c'est le
fichier LUI-MÊME !
D'où le "%1" qui représente le fichier, suivi du "%*" qui représente
l'ensemble des paramètres éventuels.
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
http://www.bellamyjc.org Jean-Claude.Bellamy@wanadoo.fr *
JC.Bellamy@free.fr
Dans le message news:ccdqtb$pgl$ , HD s'est ainsi exprimé:
Bonjour,
L'exécution d'un fichier .com par double-click est lancé grâce à la correspondance entre l'extension .com et le programme à utiliser pour cette extension. Ces infos se trouvent dans la base de registre dans la sous clé "HKEY_CLASSES_ROOT / .com" qui nous donne la donnée "comfile" puis la sous clé "HKEY_CLASSES_ROOT / comfile". Mais sous cette dernière clé on trouve dans "shell / open / command" la valeur "%1 %" sans avoir le nom du programme qui permet le lancement des ".com" . Quel est ce programme qui doit être implicite car non précisé?
Il y'a la même chose pour les "exefile"...
C'est pourtant clair ! ;-) Le programme associé à un fichier .exe , .com, .bat, .cmd, ... c'est le fichier LUI-MÊME ! D'où le "%1" qui représente le fichier, suivi du "%*" qui représente l'ensemble des paramètres éventuels.
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org http://www.bellamyjc.org *
HD
> C'est pourtant clair ! ;-) Le programme associé à un fichier .exe , .com, .bat, .cmd, ... c'est le fichier LUI-MÊME ! D'où le "%1" qui représente le fichier, suivi du "%*" qui représente l'ensemble des paramètres éventuels.
Un grand MERCI à toi Jean-claude. -- @+ HD
> C'est pourtant clair ! ;-)
Le programme associé à un fichier .exe , .com, .bat, .cmd, ... c'est
le fichier LUI-MÊME !
D'où le "%1" qui représente le fichier, suivi du "%*" qui représente
l'ensemble des paramètres éventuels.
> C'est pourtant clair ! ;-) Le programme associé à un fichier .exe , .com, .bat, .cmd, ... c'est le fichier LUI-MÊME ! D'où le "%1" qui représente le fichier, suivi du "%*" qui représente l'ensemble des paramètres éventuels.
Un grand MERCI à toi Jean-claude. -- @+ HD
Cyrille Szymanski
On 2004-07-06, HD wrote:
C'est pourtant clair ! ;-) Le programme associé à un fichier .exe , .com, .bat, .cmd, ... c'est le fichier LUI-MÊME ! D'où le "%1" qui représente le fichier, suivi du "%*" qui représente l'ensemble des paramètres éventuels.
Un grand MERCI à toi Jean-claude.
S'il fallait un EXE pour lancer d'autres EXE, qui lancerait le lanceur ?
C'est un peu plus compliqué que cela : il y a plusieurs types d'EXE. Les COM, SCR... c'est autre chose. Et enfin les BAT sont interprétés par command.com (qui est un EXE ou un COM, ou par cmd.exe, suivant la version de Windows). Chacun a sa propre section de lanceur. Et pour simplifier la chose, tout ça dépend de la version de Windows.
-- cns
On 2004-07-06, HD <hd@anti.spam.fr> wrote:
C'est pourtant clair ! ;-)
Le programme associé à un fichier .exe , .com, .bat, .cmd, ... c'est
le fichier LUI-MÊME !
D'où le "%1" qui représente le fichier, suivi du "%*" qui représente
l'ensemble des paramètres éventuels.
Un grand MERCI à toi Jean-claude.
S'il fallait un EXE pour lancer d'autres EXE, qui lancerait le
lanceur ?
C'est un peu plus compliqué que cela : il y a plusieurs types d'EXE.
Les COM, SCR... c'est autre chose. Et enfin les BAT sont interprétés
par command.com (qui est un EXE ou un COM, ou par cmd.exe, suivant la
version de Windows). Chacun a sa propre section de lanceur. Et pour
simplifier la chose, tout ça dépend de la version de Windows.
C'est pourtant clair ! ;-) Le programme associé à un fichier .exe , .com, .bat, .cmd, ... c'est le fichier LUI-MÊME ! D'où le "%1" qui représente le fichier, suivi du "%*" qui représente l'ensemble des paramètres éventuels.
Un grand MERCI à toi Jean-claude.
S'il fallait un EXE pour lancer d'autres EXE, qui lancerait le lanceur ?
C'est un peu plus compliqué que cela : il y a plusieurs types d'EXE. Les COM, SCR... c'est autre chose. Et enfin les BAT sont interprétés par command.com (qui est un EXE ou un COM, ou par cmd.exe, suivant la version de Windows). Chacun a sa propre section de lanceur. Et pour simplifier la chose, tout ça dépend de la version de Windows.
-- cns
HD
Et comment fonctionne le lancement des liens vers un fichier? Je ne comprend rien aux données de la BdR pour les fichiers .lnk
-- @+ HD
Et comment fonctionne le lancement des liens vers un fichier? Je ne comprend
rien aux données de la BdR pour les fichiers .lnk
Et comment fonctionne le lancement des liens vers un fichier? Je ne comprend rien aux données de la BdR pour les fichiers .lnk
-- @+ HD
Jean-Claude BELLAMY
Dans le message news:ccj38t$2bbg$ , HD s'est ainsi exprimé:
Et comment fonctionne le lancement des liens vers un fichier? Je ne comprend rien aux données de la BdR pour les fichiers .lnk
Effectivement, le traitement des fichiers à extension ".lnk" est radicalement différent des autres extensions.
La clef HKEY_CLASSES_ROOTlnkfile ne possède pas la classique chaine "shellopencommand", par contre on y trouve une sous-clef "CLSID".
Cela indique que ce type de fichier doit être traité par un Contrôle ActiveX, dont l'ID est "{00021401-0000-0000-C000-000000000046}", et si on examine la clef : HKEY_CLASSES_ROOTCLSID{00021401-0000-0000-C000-000000000046}
on y trouve la sous-clef habituelle "InProcServer32" qui donne le nom du fichier de ce contrôle : "shell32.dll"
C'est à cette DLL que le shell (explorer.exe) va passer le nom du fichier raccourci, puis la DLL va lire son contenu et en déduire le fichier réel à ouvrir (et l'application associée éventuelle)
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org http://www.bellamyjc.org *
Dans le message news:ccj38t$2bbg$1@biggoron.nerim.net ,
HD <hd@anti.spam.fr> s'est ainsi exprimé:
Et comment fonctionne le lancement des liens vers un fichier? Je ne
comprend rien aux données de la BdR pour les fichiers .lnk
Effectivement, le traitement des fichiers à extension ".lnk" est
radicalement différent des autres extensions.
La clef HKEY_CLASSES_ROOTlnkfile ne possède pas la classique chaine
"shellopencommand",
par contre on y trouve une sous-clef
"CLSID".
Cela indique que ce type de fichier doit être traité par un Contrôle
ActiveX,
dont l'ID est "{00021401-0000-0000-C000-000000000046}",
et si on examine la clef :
HKEY_CLASSES_ROOTCLSID{00021401-0000-0000-C000-000000000046}
on y trouve la sous-clef habituelle "InProcServer32" qui donne le nom du
fichier de ce contrôle :
"shell32.dll"
C'est à cette DLL que le shell (explorer.exe) va passer le nom du fichier
raccourci, puis la DLL va lire son contenu et en déduire le fichier réel à
ouvrir (et l'application associée éventuelle)
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
http://www.bellamyjc.org Jean-Claude.Bellamy@wanadoo.fr *
JC.Bellamy@free.fr
Dans le message news:ccj38t$2bbg$ , HD s'est ainsi exprimé:
Et comment fonctionne le lancement des liens vers un fichier? Je ne comprend rien aux données de la BdR pour les fichiers .lnk
Effectivement, le traitement des fichiers à extension ".lnk" est radicalement différent des autres extensions.
La clef HKEY_CLASSES_ROOTlnkfile ne possède pas la classique chaine "shellopencommand", par contre on y trouve une sous-clef "CLSID".
Cela indique que ce type de fichier doit être traité par un Contrôle ActiveX, dont l'ID est "{00021401-0000-0000-C000-000000000046}", et si on examine la clef : HKEY_CLASSES_ROOTCLSID{00021401-0000-0000-C000-000000000046}
on y trouve la sous-clef habituelle "InProcServer32" qui donne le nom du fichier de ce contrôle : "shell32.dll"
C'est à cette DLL que le shell (explorer.exe) va passer le nom du fichier raccourci, puis la DLL va lire son contenu et en déduire le fichier réel à ouvrir (et l'application associée éventuelle)
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org http://www.bellamyjc.org *
HD
> C'est à cette DLL que le shell (explorer.exe) va passer le nom du fichier raccourci, puis la DLL va lire son contenu et en déduire le fichier réel à ouvrir (et l'application associée éventuelle)
Et par quelle commande explorer va-t-il passer le nom du fichier raccourci ?
Je sais que la fonction FindExecutable du shell32.dll permet de trouver le programme associée mais comment trouver le fichier destination du raccourci du fichier .lnk ? Par quelle fonction et quelle dll peut on le faire ?
-- @+ HD
> C'est à cette DLL que le shell (explorer.exe) va passer le nom du
fichier raccourci, puis la DLL va lire son contenu et en déduire le
fichier réel à ouvrir (et l'application associée éventuelle)
Et par quelle commande explorer va-t-il passer le nom du fichier raccourci ?
Je sais que la fonction FindExecutable du shell32.dll permet de trouver le
programme associée mais comment trouver le fichier destination du raccourci
du fichier .lnk ? Par quelle fonction et quelle dll peut on le faire ?
> C'est à cette DLL que le shell (explorer.exe) va passer le nom du fichier raccourci, puis la DLL va lire son contenu et en déduire le fichier réel à ouvrir (et l'application associée éventuelle)
Et par quelle commande explorer va-t-il passer le nom du fichier raccourci ?
Je sais que la fonction FindExecutable du shell32.dll permet de trouver le programme associée mais comment trouver le fichier destination du raccourci du fichier .lnk ? Par quelle fonction et quelle dll peut on le faire ?
-- @+ HD
HD
> Je sais que la fonction FindExecutable du shell32.dll permet de trouver le programme associée mais comment trouver le fichier destination du raccourci du fichier .lnk ? Par quelle fonction et quelle dll peut on le faire ?
J'ai trouvé ça sur le net : http://www.vbfrance.com/code.aspx?ID53
ça retrouve la cible d'un fichier lnk. C'est assez long, ça n'utilise pas d'API, mais ça fonctionne.
Y'aurait il des API permettant de résoudre cela en quelques lignes?
-- @+ HD
> Je sais que la fonction FindExecutable du shell32.dll permet de
trouver le programme associée mais comment trouver le fichier
destination du raccourci du fichier .lnk ? Par quelle fonction et
quelle dll peut on le faire ?
J'ai trouvé ça sur le net : http://www.vbfrance.com/code.aspx?ID53
ça retrouve la cible d'un fichier lnk. C'est assez long, ça n'utilise pas
d'API, mais ça fonctionne.
Y'aurait il des API permettant de résoudre cela en quelques lignes?
> Je sais que la fonction FindExecutable du shell32.dll permet de trouver le programme associée mais comment trouver le fichier destination du raccourci du fichier .lnk ? Par quelle fonction et quelle dll peut on le faire ?
J'ai trouvé ça sur le net : http://www.vbfrance.com/code.aspx?ID53
ça retrouve la cible d'un fichier lnk. C'est assez long, ça n'utilise pas d'API, mais ça fonctionne.
Y'aurait il des API permettant de résoudre cela en quelques lignes?
-- @+ HD
Jean-Claude BELLAMY
Dans le message news:ccjedq$2r55$ , HD s'est ainsi exprimé:
C'est à cette DLL que le shell (explorer.exe) va passer le nom du fichier raccourci, puis la DLL va lire son contenu et en déduire le fichier réel à ouvrir (et l'application associée éventuelle)
Et par quelle commande explorer va-t-il passer le nom du fichier raccourci ?
Aucune idée ! Peut être "ShellExecute"
Je sais que la fonction FindExecutable du shell32.dll permet de trouver le programme associée mais comment trouver le fichier destination du raccourci du fichier .lnk ? Par quelle fonction et quelle dll peut on le faire ?
Pour trouver la destination du raccourci, c'est comme le Port-Salut, c'est écrit dessus (ou plus exactement, dedans ! ;-))
C'est ce que doit faire l'interface "iShellLink", avec la propriété "ShellLinkObject.Path" Idem pour "ShellLinkObject.WorkingDirectory", "ShellLinkObject.Arguments", ... et les méthodes "ShellLinkObject.GetIconLocation", "ShellLinkObject.SetIconLocation",...
Et si tu veux voir ce qu'il y a réellement dans un raccourci (avec un éditeur hexadécimal p.ex.) il faut le renommer depuis une fenêtre de commande avec comme extension n'importe quoi d'autre. p.ex. ren toto.lnk toto.lnk.bin et là on peut l'ouvrir lui-même, et non pas sa cible.
Tu peux alors t'amuser à en extraire les informations utiles! (mais faire appel à iShellLink est quand même plus simple!)
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org http://www.bellamyjc.org *
Dans le message news:ccjedq$2r55$1@biggoron.nerim.net ,
HD <hd@anti.spam.fr> s'est ainsi exprimé:
C'est à cette DLL que le shell (explorer.exe) va passer le nom du
fichier raccourci, puis la DLL va lire son contenu et en déduire le
fichier réel à ouvrir (et l'application associée éventuelle)
Et par quelle commande explorer va-t-il passer le nom du fichier
raccourci ?
Aucune idée !
Peut être "ShellExecute"
Je sais que la fonction FindExecutable du shell32.dll permet de
trouver le programme associée mais comment trouver le fichier
destination du raccourci du fichier .lnk ? Par quelle fonction et
quelle dll peut on le faire ?
Pour trouver la destination du raccourci, c'est comme le Port-Salut, c'est
écrit dessus (ou plus exactement, dedans ! ;-))
C'est ce que doit faire l'interface "iShellLink", avec la propriété
"ShellLinkObject.Path"
Idem pour "ShellLinkObject.WorkingDirectory", "ShellLinkObject.Arguments",
...
et les méthodes "ShellLinkObject.GetIconLocation",
"ShellLinkObject.SetIconLocation",...
Et si tu veux voir ce qu'il y a réellement dans un raccourci (avec un
éditeur hexadécimal p.ex.) il faut le renommer depuis une fenêtre de
commande avec comme extension n'importe quoi d'autre.
p.ex.
ren toto.lnk toto.lnk.bin
et là on peut l'ouvrir lui-même, et non pas sa cible.
Tu peux alors t'amuser à en extraire les informations utiles!
(mais faire appel à iShellLink est quand même plus simple!)
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
http://www.bellamyjc.org Jean-Claude.Bellamy@wanadoo.fr *
JC.Bellamy@free.fr
Dans le message news:ccjedq$2r55$ , HD s'est ainsi exprimé:
C'est à cette DLL que le shell (explorer.exe) va passer le nom du fichier raccourci, puis la DLL va lire son contenu et en déduire le fichier réel à ouvrir (et l'application associée éventuelle)
Et par quelle commande explorer va-t-il passer le nom du fichier raccourci ?
Aucune idée ! Peut être "ShellExecute"
Je sais que la fonction FindExecutable du shell32.dll permet de trouver le programme associée mais comment trouver le fichier destination du raccourci du fichier .lnk ? Par quelle fonction et quelle dll peut on le faire ?
Pour trouver la destination du raccourci, c'est comme le Port-Salut, c'est écrit dessus (ou plus exactement, dedans ! ;-))
C'est ce que doit faire l'interface "iShellLink", avec la propriété "ShellLinkObject.Path" Idem pour "ShellLinkObject.WorkingDirectory", "ShellLinkObject.Arguments", ... et les méthodes "ShellLinkObject.GetIconLocation", "ShellLinkObject.SetIconLocation",...
Et si tu veux voir ce qu'il y a réellement dans un raccourci (avec un éditeur hexadécimal p.ex.) il faut le renommer depuis une fenêtre de commande avec comme extension n'importe quoi d'autre. p.ex. ren toto.lnk toto.lnk.bin et là on peut l'ouvrir lui-même, et non pas sa cible.
Tu peux alors t'amuser à en extraire les informations utiles! (mais faire appel à iShellLink est quand même plus simple!)
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org http://www.bellamyjc.org *
Jean-Claude BELLAMY
Dans le message news:ccjft1$2rt4$ , HD s'est ainsi exprimé:
Je sais que la fonction FindExecutable du shell32.dll permet de trouver le programme associée mais comment trouver le fichier destination du raccourci du fichier .lnk ? Par quelle fonction et quelle dll peut on le faire ?
J'ai trouvé ça sur le net : http://www.vbfrance.com/code.aspx?ID53
ça retrouve la cible d'un fichier lnk. C'est assez long, ça n'utilise pas d'API, mais ça fonctionne.
Y'aurait il des API permettant de résoudre cela en quelques lignes?
Oui, je t'en ai parlé dans mon précédent message Il faut utiliser les méthodes et propriétés de l'interface "iShellLink"
J'y fais appel dans SuperExec pour créer des raccourcis : (en Delphi) ------------------ uses .... ActiveX, shellObj, ... ; ... var PersistFile : IPersistFile; ShellLink : IShellLink; ExecAssocie : string; ShortCutWC : array[0..MAX_PATH] of WideChar; ... ShellLink:=CreateComObject(CLSID_ShellLink) as IShellLink; ShellLink.QueryInterface(IPersistFile, PersistFile); ShellLink.SetDescription(pchar(CurLib+' ('+CurAppli+' '+CurParams+')')); ShellLink.SetPath(PChar('"'+SE+'"')); ShellLink.SetArguments(pchar('"'+CurAppli+'" '+inttostr(j))); ShellLink.SetShowCmd(SW_SHOWMINNOACTIVE); GetRealExecutable(CurAppli,ExecAssocie); if ExecAssocie<>'' then ShellLink.SetIconLocation(pchar(ExecAssocie),0); MultiByteToWideChar(CP_ACP,0,PChar(ShortCut),-1,@ShortCutWC,MAX_PATH); PersistFile.Save(ShortCutWC,true); ...
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org http://www.bellamyjc.org *
Dans le message news:ccjft1$2rt4$1@biggoron.nerim.net ,
HD <hd@anti.spam.fr> s'est ainsi exprimé:
Je sais que la fonction FindExecutable du shell32.dll permet de
trouver le programme associée mais comment trouver le fichier
destination du raccourci du fichier .lnk ? Par quelle fonction et
quelle dll peut on le faire ?
J'ai trouvé ça sur le net : http://www.vbfrance.com/code.aspx?ID53
ça retrouve la cible d'un fichier lnk. C'est assez long, ça n'utilise
pas d'API, mais ça fonctionne.
Y'aurait il des API permettant de résoudre cela en quelques lignes?
Oui, je t'en ai parlé dans mon précédent message
Il faut utiliser les méthodes et propriétés de l'interface "iShellLink"
J'y fais appel dans SuperExec pour créer des raccourcis :
(en Delphi)
------------------
uses
....
ActiveX,
shellObj,
... ;
...
var
PersistFile : IPersistFile;
ShellLink : IShellLink;
ExecAssocie : string;
ShortCutWC : array[0..MAX_PATH] of WideChar;
...
ShellLink:=CreateComObject(CLSID_ShellLink) as IShellLink;
ShellLink.QueryInterface(IPersistFile, PersistFile);
ShellLink.SetDescription(pchar(CurLib+' ('+CurAppli+' '+CurParams+')'));
ShellLink.SetPath(PChar('"'+SE+'"'));
ShellLink.SetArguments(pchar('"'+CurAppli+'" '+inttostr(j)));
ShellLink.SetShowCmd(SW_SHOWMINNOACTIVE);
GetRealExecutable(CurAppli,ExecAssocie);
if ExecAssocie<>'' then ShellLink.SetIconLocation(pchar(ExecAssocie),0);
MultiByteToWideChar(CP_ACP,0,PChar(ShortCut),-1,@ShortCutWC,MAX_PATH);
PersistFile.Save(ShortCutWC,true);
...
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
http://www.bellamyjc.org Jean-Claude.Bellamy@wanadoo.fr *
JC.Bellamy@free.fr
Dans le message news:ccjft1$2rt4$ , HD s'est ainsi exprimé:
Je sais que la fonction FindExecutable du shell32.dll permet de trouver le programme associée mais comment trouver le fichier destination du raccourci du fichier .lnk ? Par quelle fonction et quelle dll peut on le faire ?
J'ai trouvé ça sur le net : http://www.vbfrance.com/code.aspx?ID53
ça retrouve la cible d'un fichier lnk. C'est assez long, ça n'utilise pas d'API, mais ça fonctionne.
Y'aurait il des API permettant de résoudre cela en quelques lignes?
Oui, je t'en ai parlé dans mon précédent message Il faut utiliser les méthodes et propriétés de l'interface "iShellLink"
J'y fais appel dans SuperExec pour créer des raccourcis : (en Delphi) ------------------ uses .... ActiveX, shellObj, ... ; ... var PersistFile : IPersistFile; ShellLink : IShellLink; ExecAssocie : string; ShortCutWC : array[0..MAX_PATH] of WideChar; ... ShellLink:=CreateComObject(CLSID_ShellLink) as IShellLink; ShellLink.QueryInterface(IPersistFile, PersistFile); ShellLink.SetDescription(pchar(CurLib+' ('+CurAppli+' '+CurParams+')')); ShellLink.SetPath(PChar('"'+SE+'"')); ShellLink.SetArguments(pchar('"'+CurAppli+'" '+inttostr(j))); ShellLink.SetShowCmd(SW_SHOWMINNOACTIVE); GetRealExecutable(CurAppli,ExecAssocie); if ExecAssocie<>'' then ShellLink.SetIconLocation(pchar(ExecAssocie),0); MultiByteToWideChar(CP_ACP,0,PChar(ShortCut),-1,@ShortCutWC,MAX_PATH); PersistFile.Save(ShortCutWC,true); ...
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org http://www.bellamyjc.org *
HD
Comment un .lnk peut il contenir un virus si il ne contient que le chemin d'un fichier cible?
A priori il ne s'autoexécute pas comme un .com ou un .exe dont le lancement se fait par "%1 %*"...
Lire la cible d'un raccourci ne risque-t-il pas de déclencher un virus si il en contient effectivement un ?
-- @+ HD
Comment un .lnk peut il contenir un virus si il ne contient que le chemin
d'un fichier cible?
A priori il ne s'autoexécute pas comme un .com ou un .exe dont le lancement
se fait par "%1 %*"...
Lire la cible d'un raccourci ne risque-t-il pas de déclencher un virus si il
en contient effectivement un ?