4

リモート コンピューターからプログラムを直接実行する必要があります。これは、彼らがプログラムと共に使用しているネットワーク ライセンスのシステムのためです.
サーバーに一度インストールして登録すると、すべてのクライアントが実行可能ファイルを開いてネットワーク共有経由でアクセスします。 ネットワーク共有に簡単にアクセスしてプログラムを開くことができる小さなアプリケーションを作成しました。

ここまでは問題ありません。このようにプログラムを実行でき、開きます。わーい

// 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# では資格情報を隠す方が簡単です。ネットワーク共有へのアクセスは、必要な場合にのみ付与する必要があります。そして、それは誰かがそのプログラムを使用したい場合にのみ必要です.

4

1 に答える 1

1

いいえ、そうではありません。ただし、ファイルをメモリにロードしますが、それは起動するすべてのプログラムで同じです。

簡単なコンソール アプリでこれを自分で試すことができます。

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

これはここに印刷\\someserver\temp\ConsoleApplication8.exeされます。

あなたが言及したプログラムは、たとえば、コピーされたかどうかを確認するために、コンピューター名をいくつかチェックすることができます。Process Monitorをチェックして、「最後に使用したコンピューター名」などを含むファイルを作成/読み取りするかどうかを確認することをお勧めします。コンソールアプリで自分で試してみましたが、コピーされているファイルを指しているものはありません。

于 2015-01-27T11:59:30.777 に答える