Centrum Skryptów - Systemy operacyjne

Jak mogę określić plik wykonywalny, do którego odnosi się skrót? Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

Cześć Skrypciarze!

Witamy w rubryce TechNet, w której Skrypciarze z firmy Microsoft odpowiadają na częste pytania dotyczące używania skryptów w administracji systemu. Jeśli macie jakieś pytania z tej dziedziny, zachęcamy do wysłania e-maila na adres: scripter@microsoft.com. Nie możemy zagwarantować odpowiedzi na każde otrzymane pytanie, ale staramy się jak możemy.

Jak mogę określić plik wykonywalny, do którego odnosi się skrót?

Cześć Skrypciarzu! Jak mogę określić nazwę pliku wykonywalnego, do którego odnosi się plik skrótu .Ink?

-- AM

Cześć AM! Cieszymy się z tego pytania. W przeciwieństwie do niektórych zadawanych nam pytań ("Jak przy pomocy skryptu wyłączyć udostępnianie plików i drukowania na komputerze z Windows 2000?"), na to znamy odpowiedź.

Jak się okazuje, istnieje klasa WMI - Win32_ShortcutFile – która może podać Ci tę informację. Musisz tylko wysłać zapytanie do klasy Win32_ShortcutFile i zapytać o właściwość Target (cel); będzie to nazwa pliku wykonywalnego (lub skryptu, dokumentu, czy czegokolwiek innego), która jest wywoływana za każdym razem, gdy nastąpi podwójne kliknięcie skrótu. Poniżej masz niewielki, prosty skrypt, który tworzy listę wszystkich plików skrótu na komputerze, podając podpis pod ikoną, który widzisz w Moim Komputerze lub Eksploratorze Windows (FileName), nazwę odpowiadającego pliku wykonywalnego (Target) oraz ścieżkę pliku do samego skrótu (Description):

objstrComputer = "."

Set objWMIService = GetObject _

    ("winmgmts:\\" & strComputer & "\root\cimv2")

Set colFiles = objWMIService.ExecQuery("Select * From Win32_ShortcutFile")

For Each objFile in colFiles

    Wscript.Echo "Name: " & objFile.FileName

    Wscript.Echo "Shortcut target: " & objFile.Target

    Wscript.Echo "File name: " & objFile.Description

Next

Oczywiście nie musisz sprawdzać wszystkich plików skrótu na piechotę. Załóżmy, że chcesz zlokalizować plik wykonywalny dla pojedynczego skrótu. W takim wypadku użyj takiego skryptu:

strComputer = "."

Set objWMIService = GetObject _

    ("winmgmts:\\" & strComputer & "\root\cimv2")

Set colFiles = objWMIService.ExecQuery _

    ("Select * From Win32_ShortcutFile WHERE FileName = 'Adobe Photoshop Elements 2.0'")

For Each objFile in colFiles

    Wscript.Echo "Name: " & objFile.FileName

    Wscript.Echo "Shortcut target: " & objFile.Target

    Wscript.Echo "File name: " & objFile.Description

Next

Poniżej inny przykład, który sprawdza, czy na komputerze odwołującym się do Microsoft Virtual PC są jakieś skróty. Zauważ, że – z powodu konwencji WMI – za każdym razem, gdy używasz ścieżki pliku w kwerendzie, musisz użyć dwóch \\ w nazwach ścieżek, zamiast jednego:

strComputer = "."

Set objWMIService = GetObject _

    ("winmgmts:\\" & strComputer & "\root\cimv2")

Set colFiles = objWMIService.ExecQuery _

    ("Select * From Win32_ShortcutFile WHERE Target = " & _

        "'C:\\Program Files\\Microsoft Virtual PC\\Virtual PC.exe'")

For Each objFile in colFiles

    Wscript.Echo "Name: " & objFile.FileName

    Wscript.Echo "Shortcut target: " & objFile.Target

    Wscript.Echo "File name: " & objFile.Description

Next

To powinno wystarczyć na początek, jeśli chodzi o uzyskiwanie informacji o skrótach. Osobom, które pytały o tworzenie i usuwanie skrótów obiecujemy, że już wkrótce zajmiemy się tym bliżej.

 Do początku strony Do początku strony


Centrum Skryptów - Systemy operacyjne