2016-09-21 2 views
1

SQLite 데이터베이스를 사용하여 데이터를 읽거나 쓰는 C# 프로그램이 있습니다. 이 프로그램은 UAC 고도가 필요하며 항상 실행되도록 요구합니다. 이 프로그램을 수동으로 실행할 때 '관리자 권한으로 실행'해야합니다. SQLite 데이터베이스는 정상적으로 데이터베이스 파일에 데이터를 읽고 쓸 수 있습니다. 그러나 내 문제는 컴퓨터를 시작할 때이 프로그램을 자동으로 실행하려고 할 때입니다.SQLite reader.read()는 작업 스케줄러에서 실행될 때 항상 false를 반환합니다.

앞서 언급했듯이이 프로그램을 항상 실행해야합니다. 따라서 충돌이 발생한 경우 프로그램을 다시 실행하는 몇 가지 방법을 제시했습니다 (위대하게 작동 함). 그러나 컴퓨터를 다시 시작할 때 실행을 시작하려면이 기능이 필요합니다. 일반적으로 이것은 문제가 아니지만 UAC가 필요한 프로그램이므로 UAC 대화 상자에서 예를 클릭하는 경우가 거의 없으므로 주위를 둘러 보니이 작업을 수행하는 유일한 방법은 작업 스케줄러에서 작업을 설정하는 것입니다. 그래서, 시작할 때 이것을 실행하는 작업을 설정했습니다. 테스트를하면 프로그램이 실행되지만 올바르게 작동하지 않습니다. 추가 디버깅을 할 때마다 코드가 SQLiteDataReader.read() 행에 도달 할 때마다 레코드가 있다는 것을 알았지 만 항상 false를 반환하는 것으로 나타났습니다. 그러나이 작업은 Task Scheduler를 통해 프로그램이 실행될 때만 발생합니다. 오류가 SQLite에서 오는 것 같습니다. 파일 권한이 문제가 될 수 있다고 생각하지만 해결 방법을 모릅니다.

내가 이미 시도한 것에 대해주의해야 할 몇 가지 사항. 1) Task Scheduler에서 수동으로 실행하는 데 사용한 것과 동일한 사용자 계정을 사용하여 실행하도록 설정했습니다. 도메인 관리자, 관리자 및 로컬 관리자 계정이기도합니다. 2) 작업이 "가장 높은 권한으로 실행"으로 설정되었습니다. 3) 내가 생각할 수있는 모든 객체 (관리자, 도메인 관리자, 사용자, 모든 사람 등)에 대해 보안 권한을 모든 권한으로 변경했습니다. 프로그램의 루트 폴더와 SQLite 데이터베이스 파일 모두. 4) 제한된 액세스가있을 경우 프로그램 파일 폴더 외부에서 전체 응용 프로그램을 이동하려고했습니다.

나는 이것을 알아 내려고 노력 중이다. 다음에 무엇을 시도 할 것인가에 대한 아이디어가 있습니까? 또는 사용자가 개입하지 않아도 시작할 때 올바르게 실행되도록하는 다른 솔루션?

+1

정상적인 시작 폴더를 시도 했습니까? – Bytemain

답변

1

이 문제에 대한보고가 조금 늦었습니다. Stupid on my part ... 작업 스케줄러는 응용 프로그램 파일 폴더 경로를 시작 경로로 포함하기 만하면됩니다. 내 경로가 상대 경로를 사용하여 참조 할 때 데이터베이스 파일을 찾지 못했습니다. 개인적으로 이것이 앱의 폴더에 항상 기본이되어서는 안되는 이유를 이해하지 못한다. 그러나 당신은 살고 그 사이의 모든 것을 배우고 머리를 터트린다.

+0

대단히 고마워, 너는 내 하루를 구 했어! – Bytemain