2012-02-15 2 views
1

대부분의 Windows 7 컴퓨터에서 작동하는 VB6 응용 프로그램이 있습니다 (UAC가 켜져 있어도 마찬가지 임). 그러나 프로그램이 아닌 경우 시작시 '관리자 권한으로 실행'으로 설정하면 데이터베이스 쿼리를 시도 할 때 '하나 이상의 필수 매개 변수에 값이 없습니다'라는 오류 메시지가 반환됩니다.일부 Windows 7 컴퓨터에서만 하나 이상의 필수 매개 변수 오류 값이 없습니다

오류 메시지는 대개 테이블 이름 및/또는 매개 변수의 철자가 잘못되었음을 의미합니다. 그러나 동일한 절차/쿼리 호출을 수행하는 동일한 응용 프로그램이 Windows XP 및 일부 Win 7 시스템에 문제가 없으므로 여기에는 해당되지 않습니다.

데이터베이스는 MS Access 2003 형식입니다. 데이터베이스는 응용 프로그램 exe 및 dll과 함께 Program Files 디렉터리에 있습니다.

이것은 일관된 오류가 있다면 쉽게 디버깅하고 계속 진행할 수 있지만 모든 테스트 시스템이이 오류를 생성하지 않기 때문에 손실이 발생합니다.

이 문제가 발생하는 이유와 해결 방법에 대한 의견이 있으십니까? 이 위치가 보호되고 UAC 활성화 시스템의 표준 사용자 및 관리자가 쓸 수 없기 때문에 프로그램 파일에 데이터베이스 파일을 저장

덕분에, 크리스

+0

UAC에 대해 언급했습니다. 그래서 이것은 분명히 "가상화"프로그램 파일 "] (http://support.microsoft.com/kb/927387) 디렉터리에 의해 발생하지 않은 것을 확인했습니다 것 같아요? – MarkJ

+0

MarkJ 나는 당신의 링크를 읽으려고했으나 그것을 따르는 데 어려움이 있었다. UAC는 응용 프로그램의 속성을 '관리자 권한으로 실행'으로 설정하면 UAC에서 사용자에게 메시지를 표시 할 때 문제가 사라 지므로 UAC에 대해 언급했습니다. –

+0

HansUp 개발 환경이나 테스트 장비에 문제가 없으므로 현재로서는 쿼리를 트래핑 할 수 없습니다. 이 문제가있는 컴퓨터를 사용하고 있습니다. 나는이 설정이 잘된 많은 다른 컴퓨터에서 작동하기 때문에 SQL 문과 관련된 문제가 될지 잘 모르겠다. –

답변

3

좋은 생각이 아니다. 데이터베이스를 사용자 프로필에 AppData 또는 모든 사용자간에 공유해야하는 경우 ProgramData에 저장해야합니다.

표준 사용자는 Program Files에 쓸 수 없기 때문에 Vista/7에는 가상화 메커니즘이 있습니다. Program Files에 대한 쓰기 액세스 권한이없는 프로그램이 Program Files에 쓰기를 시도하면 파일 시스템은 요청을 사용자 프로필로 리디렉션합니다. 가상화 된 Program Files 디렉터리는 C:\Users\<account>\AppData\Local\VirtualStore에 있습니다. 가상화 때문에이 오류가 발생했다고 생각합니다. 데이터베이스가 실제 프로그램 파일과 가상화 파일의 두 위치에 모두 존재할 수 있으며 파일이 다를 수 있습니다. 가상화 된 버전은 필요한 레코드를 가질 수 없기 때문에 오류 메시지가 나타납니다.

관리자 권한으로 응용 프로그램을 시작하면 가상화가 비활성화되고 Program Files에있는 파일에 액세스합니다.

데이터베이스 파일이 VirtualStore에 있는지 확인하고 Program Files에 저장된 파일과의 차이점을 찾으십시오.

+0

그건 문제가되는 것 같습니다. 나는'ProgramData' 특수 폴더를 사용하려고 시도했지만, 그 자체로 디렉토리 자체보다는 코드를 정리하는 것과 관련이 있다고 생각되는 다른 문제를 일으키는 것으로 보입니다. –