2015-01-27 7 views
4

원격 컴퓨터에서 프로그램과 함께 네트워크 라이센스 시스템을 사용하기 때문에 프로그램을 직접 실행해야합니다.
서버에 한 번 설치하고 등록하면 모든 클라이언트가 다음과 같이 네트워크 공유를 통해 액세스합니다. 실행 파일을 엽니 다. 네트워크 공유에 대한 액세스 권한을 얻고 프로그램을 쉽게 열 수있는 작은 응용 프로그램을 작성했습니다.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#에서 자격 증명을 모호하게하는 것이 더 쉽습니다. 필요한 경우 네트워크 공유에 대한 액세스 만 제공해야합니다. 누군가가 프로그램을 사용하고자 할 때만 필요합니다.

+2

ShellExecute를 'true'로 설정할 수 있습니까? 실제 질문은 _ 왜 "응용 프로그램이 복사 된 것으로 생각합니까?"_입니다. ProcessMonitor를 사용하면이 사실을 알 수 있습니다. – CodeCaster

+0

몇 분 안에'ShellExecute = true'를 시도해 보겠습니다. 미리 감사드립니다. – MrMAG

+0

ShellExecute가 도움이되지 않았습니다 – MrMAG

답변

1

아니요. 메모리에 파일을로드하지만 시작하는 모든 프로그램에 대해 동일합니다.

당신은 자신 간단한 콘솔 응용 프로그램과 함께이 시도 할 수 있습니다 :이 여기 \\someserver\temp\ConsoleApplication8.exe를 인쇄

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

.

언급 한 프로그램은 예를 들어 컴퓨터 이름을 검사하여 복사되었는지 확인할 수 있습니다. 나는 Process Monitor을 확인하여 '마지막으로 사용 된 컴퓨터 이름'또는 비슷한 것을 포함하는 파일을 생성하거나 읽는지 확인하는 것이 좋습니다. 방금 콘솔 앱으로 직접 시도했지만 복사되는 파일을 가리키는 내용이 없습니다.

+0

나는 의심 스럽다. 'typeof (Program) .Assembly.Location'을 확인하십시오; 코드베이스가 다르며 어셈블리 위치가 다릅니다. 코드베이스는 어셈블리가 사용 된 곳이 아닌 곳입니다. –

+0

@SriramSakthivel : 여전히 똑같습니다. 게시물을 '위치 정보'로 업데이트했습니다. –

+0

코드 스 니펫을 보내 주셔서 감사합니다. 나는 나 자신도 그것을 시도했다. 아마 ProcMon을 사용하여 더 자세히 살펴야 할 것입니다. * 호기심 * – MrMAG