遠端桌面連到伺服器上執行程式會直接跳出
用 Delphi 5 + BDE 開發的程式,安裝在 MSSQL2000 + Windows 2003 Std 環境使用者以遠端桌面連線到 Win 2003 上執行程式
系統管理員的帳號都沒有問題
一般使用者的帳號進入某些功能就直接跳出
事件檢視器內的訊息
失敗的應用程式 APP.exe,版本 1.0.0.98,失敗的模組 kernel32.dll,版本 5.2.3790.5069,錯誤位址 0x0000bef7。
在程式碼逐一用 ShowMessage() 來抓問題段落[code]
procedure TFC0300.FormShow(Sender: TObject);
begin
ShowMessage('A');
qyM.Open; //TQuery
ShowMessage('B');
end;
[/code]發現是 qyM.Open; 這裡的問題,又沒有足夠的資訊
所以加入錯誤處理來看看,程式改成[code]
procedure TFC0300.FormShow(Sender: TObject);
begin
try
qyM.Open;
except
on E: Exception do
begin
ShowMessage(E.Message);
end;
end;
end;
[/code]這樣就有了更完整的資訊
當一般使用者首次執行時會出現的錯誤訊息:
Unknown table type.
File or directory does not exist.
File: C:\PDOXUSRS.NET
Permission denied.
Directory: C:\
系統管理者有先執行過後,一般使用者再執行會出現的錯誤訊息:
Unknown table type.
Permission denied.
File: C:\PDOXUSRS.NET
Directory: C:\
因為 C:\PDOXUSRS.NET 在管理員執行時已產生了所以訊息稍有不同
問題很單純就是權限不足
因為在伺服器環境要在 C:\ 目錄下增加檔案需要有系統管理員權限
而 qyM 因為有設定 CacheUpdates := true 就會使用 PDOXUSRS.NET 並且同時會產生資料暫存檔
所以可以先產生 C:\PDOXUSRS.NET 並設定檔案的安全性開放所有使用者(users)可寫入的權限
另外因為 BDE 會產生暫存檔,需要將程式所在的目錄權限也開放所有使用者可寫入的權限
不過這樣開放寫入權限算是治標的方式
最好還是改變架構
如果程式能接受 qyM 的 CacheUpdates 屬性可以不設定 true 就沒有這些麻煩了
頁:
[1]