Windows, кажется, потеряла след приложения .NET - PullRequest
5 голосов
/ 25 февраля 2010

У нас есть приложение .NET, которое мы распространяем среди наших пользователей через установочный пакет MSI. У нас есть приложения на C ++, которые запускаются каждое утро, чтобы определить, устарела ли пользовательская копия приложения, и если да, то мы вытащим новый MSI и установим его. Если приложение запущено, нам нужно закрыть его, чтобы мы могли выполнить обновление.

Наша проблема в том, что время от времени кажется, что windows «теряет» наше приложение. Он не сообщит о том, что процесс запущен - хотя это так. Это позволит нам перезаписать или даже удалить используемый исполняемый файл, не удаляя приложение.

Может быть, это что-то общее, но мы не можем понять, что происходит! У кого-нибудь есть понимание этой ситуации?

Похоже, создается временная копия нашего приложения, и программа запускается из этого. Но если это так, то почему это не происходит постоянно?

EDIT: В нашей программе мы используем функцию «EnumProcesses» из Platform SDK, PSAPI.dll, для перечисления всех запущенных процессов.

Ответы [ 2 ]

2 голосов
/ 25 февраля 2010

Может ли сценарий или приложение работать как 64-битная программа, а другая как 32-битная программа? Если это так, то на 64-разрядных компьютерах проверка обновлений может искать неправильное местоположение для существующего приложения и, таким образом, сообщать о его отсутствии?

0 голосов
/ 25 февраля 2010

Какой механизм вы используете, чтобы проверить, запущен процесс или нет?

Попробуйте использовать что-то вроде Process Explorer, чтобы увидеть, с какого пути загружен исполняемый образ - он должен быть указан в разделе модулей.

...