4

我需要直接从远程计算机执行程序,因为他们的网络许可系统与程序一起使用。
您在服务器上安装并注册一次,所有客户端通过打开可执行文件通过网络共享访问它。 我写了一个小应用程序,它应该可以很容易地访问网络共享并打开程序。

到目前为止没有问题。我可以像这样执行程序,它会打开。耶

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

但是程序会弹出一条消息,表明该程序可能已被复制。就好像它已经在本地执行了一样。

如果我通过资源管理器打开程序,则不会出现此问题,只需以这种方式打开它 => \\192.168.0.100\Share\MyProgram.exe

是否Process.Start()将远程打开的文件存储在本地机器上(临时)?如果是这样,有没有办法解决?

附加信息:
问:有些人可能会想,如果您可以在桌面上创建一个快捷方式,为什么要为此付出这么多麻烦呢?或者为什么不制作一个批处理文件?
A: IMO,在 C# 中更容易隐藏凭据。仅在必要时才应授予对网络共享的访问权限。只有当有人想使用该程序时才需要这样做。

4

1 回答 1

1

不,它没有。它确实将文件加载到内存中,但是对于您启动的每个程序都是一样的。

您可以使用简单的控制台应用程序自己尝试:

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

这打印\\someserver\temp\ConsoleApplication8.exe在这里。

您提到的程序可以对计算机名称进行一些检查,例如检查它是否被复制。我建议检查进程监视器以​​查看它是否创建/读取包含“上次使用的计算机名称”或类似内容的文件。我只是自己尝试使用控制台应用程序,但没有任何指向正在复制的文件。

于 2015-01-27T11:59:30.777 回答