bestlong 怕失憶論壇

 

 

搜索
bestlong 怕失憶論壇 論壇 Delphi 遠端桌面連到伺服器上執行程式會直接跳出 ...
查看: 3814|回復: 1
go

遠端桌面連到伺服器上執行程式會直接跳出 [複製鏈接]

Rank: 9Rank: 9Rank: 9

1#
發表於 2013-7-3 15:44 |只看該作者 |倒序瀏覽 |打印
用 Delphi 5 + BDE 開發的程式,安裝在 MSSQL2000 + Windows 2003 Std 環境
使用者以遠端桌面連線到 Win 2003 上執行程式
系統管理員的帳號都沒有問題
一般使用者的帳號進入某些功能就直接跳出

事件檢視器內的訊息

失敗的應用程式 APP.exe,版本 1.0.0.98,失敗的模組 kernel32.dll,版本 5.2.3790.5069,錯誤位址 0x0000bef7。
我是雪龍
http://blog.bestlong.idv.tw
http://www.bestlong.idv.tw

Rank: 9Rank: 9Rank: 9

2#
發表於 2013-7-3 15:51 |只看該作者
在程式碼逐一用 ShowMessage() 來抓問題段落
  1. procedure TFC0300.FormShow(Sender: TObject);
  2. begin
  3.   ShowMessage('A');
  4.   qyM.Open; //TQuery
  5.   ShowMessage('B');
  6. end;
複製代碼
發現是 qyM.Open; 這裡的問題,又沒有足夠的資訊
所以加入錯誤處理來看看,程式改成
  1. procedure TFC0300.FormShow(Sender: TObject);
  2. begin
  3.   try
  4.     qyM.Open;
  5.   except
  6.     on E: Exception do
  7.     begin
  8.       ShowMessage(E.Message);
  9.     end;
  10.   end;
  11. end;
複製代碼
這樣就有了更完整的資訊

當一般使用者首次執行時會出現的錯誤訊息:
Unknown table type.
File or directory does not exist.
File: C:\PDOXUSRS.NET
Permission denied.
Directory: C:\
PDOXUSRS.NET 錯誤1.png

系統管理者有先執行過後,一般使用者再執行會出現的錯誤訊息:
Unknown table type.
Permission denied.
File: C:\PDOXUSRS.NET
Directory: C:\
PDOXUSRS.NET 錯誤2.png
因為 C:\PDOXUSRS.NET 在管理員執行時已產生了所以訊息稍有不同

問題很單純就是權限不足
因為在伺服器環境要在 C:\ 目錄下增加檔案需要有系統管理員權限

而 qyM 因為有設定 CacheUpdates := true 就會使用 PDOXUSRS.NET 並且同時會產生資料暫存檔
所以可以先產生 C:\PDOXUSRS.NET 並設定檔案的安全性開放所有使用者(users)可寫入的權限
另外因為 BDE 會產生暫存檔,需要將程式所在的目錄權限也開放所有使用者可寫入的權限
不過這樣開放寫入權限算是治標的方式
最好還是改變架構

如果程式能接受 qyM 的 CacheUpdates 屬性可以不設定 true 就沒有這些麻煩了
我是雪龍
http://blog.bestlong.idv.tw
http://www.bestlong.idv.tw
‹ 上一主題|下一主題

Archiver|怕失憶論壇

GMT+8, 2024-4-25 12:27 , Processed in 0.017513 second(s), 12 queries .

Powered by Discuz! X1.5

© 2001-2010 Comsenz Inc.