none
Prog ID RRS feed

  • Вопрос

  •  

    Подскажите каким командлетом или объектом можно узнать Programmatic Identifier (ProgID) для конкретного приложения на ХР (может используя PID или имя процесса). Для дальнейшего использования в New-Object

    Powershell

    22 августа 2008 г. 11:45

Ответы

Все ответы

  • Code Snippet

    $process = get-process | ? {$_.ProcessName -eq "mstsc"}

    $process.id

    В первой строке получаем объект нужного процесса (у меня это mstsc.exe), а во второй возвращаем его PID. И в дальнейшем в качестве PID используете $process.id

     

    Обратная операция делается так же:

    Code Snippet

    $process = get-process | ? {$_.Id -eq 4764}

    $process.ProcessName

     

     

    Enjoy

    25 августа 2008 г. 8:25
  • Спасибо, но это индетификатор процесса, но не то что мне надо например:

     

    $ie = new-object -comobject InternetExplorer.Application

    Подставляя понятное дело вместо InternetExplorer.Application  PID or

    iexplore.exe  ничего не будет а будет ошибка  "Cannot load COM type explorer.exe.
    "

    26 августа 2008 г. 8:47
  • Не уверен, что это возможно, поскольку с конкретным .exe файлом может быть связано несколько CLSID. Список всех ProgID можно посмотреть в реестре, в ветке HKCR. Т.е. привязки к исполняемому файлу нету. Есть только привязка CLSID к ProgID.

    полагаю, это тут: http://www.eggheadcafe.com/aspnet_answers/vcmfcole/Jul2006/post27492033.asp

    26 августа 2008 г. 9:37
  •  

    Спасибо за ответ. Я неправильно задал вопрос. Необходимо для существующего приложения майкрософт офиса (например ворда, в котором запущены документы), узнать какие доки открыты и путь к этим файлам....

     

    А может кто-то пробовал с помощью объектов  (для пакета вин.офиса), например:

    $shell = New-Object -ComObject "word.Application"    -  данный текст создает новый объект, и он понятное дело никакой информации не предоставляет, разве что можно получить данные о

     

    $shell.recentfiles | select-object Name,Path

     

    Но это не то что нужно.

     

    Каким командлетом или чем ещё можно получить необходимые данные с рабочего приложения, например Word?

     

     

    26 августа 2008 г. 11:17
  • Спасибо

     

    Не подскажите, где стоит  formating directives  текст (<Configuration>   и т.д.) в каком файле ?????

     

    Function Get-Object ($ProgID) {
    [System.Runtime.InteropServices.Marshal]::GetActiveObject($ProgID)
    }

     

    and the following formating directives: 

     

    <Configuration>
        <ViewDefinitions>
            <View>
                <Name>CustomView</Name>
                <ViewSelectedBy>
                    <TypeName>System.__ComObject#{0002096b-0000-0000-c000-000000000046}</TypeName>
                </ViewSelectedBy>
                <TableControl>
                    <TableHeaders>
                        <TableColumnHeader>
                           <Label>Name</Label>
                           <Width>20</Width>
                         </TableColumnHeader>
                         <TableColumnHeader>
                           <Label>FullName</Label>
                         </TableColumnHeader>

                </TableHeaders>
                    <TableRowEntries>
                        <TableRowEntry>
                            <TableColumnItems>
                         <TableColumnItem>
                           <PropertyName>Name</PropertyName>
                         </TableColumnItem>
                          <TableColumnItem>
                           <PropertyName>FullName</PropertyName>
                         </TableColumnItem>
                            </TableColumnItems>
                        </TableRowEntry>
                     </TableRowEntries>
                </TableControl>
            </View>       
        </ViewDefinitions>
    </Configuration>


     

    29 августа 2008 г. 7:54
  • Расположение %SystemRoot%\system32\WindowsPowerShell\v1.0

    Имя файла Get-Object.Format.ps1xml

    29 августа 2008 г. 8:46
    Модератор
  • Спасибо sie все работает

     

    И ещё не подскажите где можно прочитать для каждого елемента офиса и не только (ексель, IE  и т.д) ключ реестра

    <TypeName>System.__ComObject#{0002096b-0000-0000-c000-000000000046}</TypeName>

    для дальнейшего получения данных как в предыдущем примере

    29 августа 2008 г. 9:42
  • Найдите в реестре ветку инсталятора Windows, где перечислены все установленные программы (то что отображается в оснастке Add/Remove Program) - там есть то, что вам нужно.

     

    Статья http://support.microsoft.com/kb/247501

     

    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall

     

    1 сентября 2008 г. 8:11
    Модератор
  •  sie написано:

    Найдите в реестре ветку инсталятора Windows, где перечислены все установленные программы (то что отображается в оснастке Add/Remove Program) - там есть то, что вам нужно.

     

    Статья http://support.microsoft.com/kb/247501

     

    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall

     

     

    Для удаления все отлично. Но я не вижу строки с 0002096b-0000-0000-c000-000000000046   как используеться в примере для того же ворда

    <TypeName>System.__ComObject#{0002096b-0000-0000-c000-000000000046}</TypeName>

     

    А вот хотелось бы для приложений знать  значение ХХХ  

     

    <TypeName>System.__ComObject#{значение ХХХ }</TypeName>

     

    1 сентября 2008 г. 10:00
  • Если вы знаете приложение, то всегда можно найти его GUID поиском через реестр или поиском в Интернете.

    3 сентября 2008 г. 7:13
    Модератор