2011-06-02 88 views
0

編輯:這個問題只發生在我聽說的Windows 7和Vista上。只有以管理員身份運行應用程序才能運行?

我有一個非常簡單的應用程序與外部圖形庫開發。如果我將此應用程序安裝到程序文件目錄並運行它,它將立即崩潰,但它通常工作正常,具有完全相同的文件。我意識到這是因爲您需要以管理員身份運行該應用程序才能正常工作。

我很欣賞這是否與我使用的圖形引擎直接相關,但我並不真的這麼認爲(但我無能爲力)。誰能幫我?

編輯更多的細節:
可執行的應用程序和所需要運行該文件安裝到默認程序目錄 - 對我來說,C:\ Program Files文件(x86)的。如果你嘗試運行而不點擊以管理員身份運行,它會簡單地凍結並說「應用程序已停止工作。Windows正在檢查問題的解決方案...」我的問題基本上是,我該如何運行它作爲管理員是沒有必要的?

+0

那麼是由管理員下載的圖書館,並放在其他用戶看不到的目錄?你有沒有收到任何錯誤信息? – 2011-06-02 11:14:25

+0

運行它所需的應用程序可執行文件和文件被安裝到默認程序目錄中 - 對我來說,C:\ Program Files(x86)。如果你嘗試運行時沒有單擊以管理員身份運行,它會簡單地凍結並說「應用程序已停止工作。Windows正在檢查問題的解決方案......」我的問題基本上是如何使其以管理員身份運行沒有必要。 – pighead10 2011-06-02 11:17:02

+0

它使用dll嗎?他們註冊是否正確。您確定dll的註冊表項沒有指向管理員的私人目錄嗎? – StevieG 2011-06-02 11:21:51

回答

3

當程序無法執行某個操作時,它(操作)應該會優雅地失敗。我的猜測是你的應用程序試圖做一些它不能像普通用戶那樣做的事情,然後無法檢查返回代碼,然後崩潰。你需要確定你的程序在做什麼,它不應該像普通用戶那樣做。例如(把我的頭頂部):

  • 寫文件,程序文件(x86)
  • 寫入HKLM
+0

我認爲HKLM寫入是針對普通用戶的透明重定向。 – 2011-06-02 11:29:22

+0

是的 - 我的程序正在寫入程序文件目錄中的文件。謝謝 – pighead10 2011-06-02 11:30:20

+0

您應該寫入ProgramData目錄。例如使用'SHGetFolderPath'和'CSIDL_LOCAL_APPDATA'。至於HKLM寫道,我不確定,但我認爲透明重定向是用於註冊表的x86部分... – Blazes 2011-06-02 11:37:25

2

(如果沒有更多的細節)該問題最有可能與事實上,你的程序試圖寫入目錄,然後除了文件的創建/修改實際上有效。 UAC阻止應用程序在沒有管理員權限的情況下編寫Program Files目錄。解決方案是重新設計您的應用程序,使其不依賴於此類行爲,或將相關文件存儲在其中一個預期位置(AppData等文件夾)中。

1

如果您右鍵單擊EXE並轉到​​,有一些選項可能會有所幫助。您可以嘗試在以前的Windows版本的兼容模式下運行應用程序,或者如果這樣做不起作用,則至少將EXE標記爲默認以管理員身份運行。

相關問題