Сохраняет ли 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, чтобы увидеть, создает ли он / читает файл, который содержит "последнее использованное имя компьютера" или что-то подобное. Я сам попробовал это с консольным приложением, но ничего не указывало на копируемый файл.