Сохраняет ли Process.Start локальную копию удаленно исполняемого файла?

Мне нужно выполнить программу непосредственно с удаленного компьютера, потому что у них есть система сетевого лицензирования, которая у них есть с программой.
Вы устанавливаете и регистрируете его один раз на сервере, и все клиенты получают к нему доступ через общий сетевой ресурс, открывая исполняемый файл. Я написал небольшое приложение, которое должно облегчить получение доступа к общему сетевому ресурсу и открытие программы.

Нет проблем до этого момента. Я могу выполнить программу, как это, и она открывается. ура

// Some cred and network stuff.
// ...
Process.Start("\\192.168.0.100\Share\MyProgram.exe");

Но программа выскакивает сообщение, что программа, возможно, была скопирована. Как будто это было выполнено локально.

Эта проблема не возникает, если я открываю программу через проводник, просто открыв ее таким образом => \\192.168.0.100\Share\MyProgram.exe,

Есть ли Process.Start() хранить файлы, которые открыты удаленно, локально на машине (временно)? И если это так, есть ли способ обойти?

Дополнительная информация:
Q: Кто-то может подумать, зачем так много проблем, если вы можете просто создать ярлык на рабочем столе? Или почему бы не сделать командный файл?
A: IMO, в C# легче скрывать учетные данные. Доступ к сетевому ресурсу должен предоставляться только при необходимости. И это необходимо только тогда, когда кто-то хочет использовать программу.

1 ответ

Нет, это не так. Он загружает файл в память, но это одинаково для каждой запускаемой программы.

Вы можете попробовать это сами с помощью простого консольного приложения:

static void Main(string[] args)
{
    Console.WriteLine(typeof(Program).Assembly.Location);
    Console.ReadKey();
}

Это печатает \\someserver\temp\ConsoleApplication8.exe Вот.

У упомянутой вами программы могут быть некоторые проверки имени компьютера, например, чтобы проверить, было ли оно скопировано. Я предлагаю проверить Process Monitor, чтобы увидеть, создает ли он / читает файл, который содержит "последнее использованное имя компьютера" или что-то подобное. Я сам попробовал это с консольным приложением, но ничего не указывало на копируемый файл.

Другие вопросы по тегам