2009-03-02 2 views
6

.Net 2.0 Framework WinForms. 그것은 큰 사용자 기반 (CD에서 설치)에서 작동하도록되어 있습니다. InnoSetup을 사용하여 설치가 완료되었습니다.Vista & C# - 끌어서 놓기 문제 (높이와 관련 없음)

두 기계에서 응용 프로그램은 드래그 & 드롭을 허용하지 않습니다 (응용 프로그램과 소스 모두 D & D의 높이 수준이 동일 함).

추가로 읽기 & 읽기 & 응용 프로그램 바로 가기에 대해 INTERACTIVE SID에 대한 실행 권한을 실행하면이 문제가 해결 된 것으로 보입니다.

질문 : 이러한 권리를 추가하고 D & D를 추가하는 것이 어떻게 관련이 있으며 설치 프로세스에서 해당 권한을 확인/설정하는 방법은 무엇입니까?

+1

,이 또한 프로그램이 설치된 위치에 연결되어 -이 프로그램 파일에서 설치되어있는 경우 ("신뢰할 수있는 위치") 그것은 잘못 행동합니다. –

+1

좋은 질문입니다, 답을 모른다. –

+1

최근 비슷한 기발한 배포 문제 (winforms 및 .net 2.0)가있는 유사한 보트에 최근에있었습니다. 비스타에 국한되지 않는다는 것을 알게된다면별로 놀랍지 않을 것입니다. 몇 가지 문제가 있었지만 처음에는 Vista에서만 발생하는 것으로 보였습니다. 몇 주 후에 특정 XP 시스템에서 발생합니다. – blak3r

답변

0

어둠 속에서 방금 찍은 것이지만 응용 프로그램의 Main() 메서드에 [STAThread] 속성이 있습니까? 그것 없이는 끌어서 놓기가 전혀 작동하지 않습니다. (이것은 인터랙티브 SID에 대한 권리가 변경된 행동의 변화를 설명하지는 못했지만).

+0

물론 그렇습니다. 또한이 문제는 2 개의 (테스트 한 50 개) 컴퓨터에서만 발생합니다. –

+0

예, 스레딩 문제는 Windows.Forms에서 임의의 동작이 발생할 수 있습니다. 일부 컴퓨터에서 작동하고 다른 컴퓨터에서 작동하지 않을 수 있습니다. – AMissico

0

Visual Studio 환경 외부에서 직접 프로젝트의 exe 파일을 실행해야합니다. Windows Vista 플랫폼에서 작업하고 있습니다.

  1. 내가 대해 완전히 확실 해요 ...

이 관련되어 그 권리와 D & D를 추가하는 방법 :

1

현재 두 가지 질문이 있습니다. 우리는 D & D를 우리의 WinForm 앱에서 셸과 아웃룩에/비스타에서 아무런 문제없이 사용합니다. 나는 당신이 제안한 ACL 변경이 당신의 문제를 해결할 확실한 것은 확실치 않습니다.

  1. 설치 프로세스에서 이러한 권한을 확인하거나 설정하는 방법은 무엇입니까?

다음 코드이 create a .Net install class하는 것입니다 및 추가 할 수있는 쉬운 방법 : 또한

public static void ReplacePermissions(string filepath, WellKnownSidType sidType, FileSystemRights allow) 
    { 
     FileSecurity sec = File.GetAccessControl(filepath); 
     SecurityIdentifier sid = new SecurityIdentifier(sidType, null); 
     sec.PurgeAccessRules(sid); //remove existing 
     sec.AddAccessRule(new FileSystemAccessRule(sid, allow, AccessControlType.Allow)); 
     File.SetAccessControl(filepath, sec); 
    }