Windows-Server-2008-R2

從批處理文件呼叫的 Setup.exe 崩潰並出現錯誤 0x0000006

  • March 11, 2013

我們將在幾乎所有的電腦上安裝一些新軟體,我正在嘗試設置一個 GPO 來完成它。我們正在執行 Windows Server 2008 R2 域控制器,我們所有的機器都是 Windows 7。

GPO 呼叫以下腳本,該腳本位於我們文件伺服器的網路共享上。它自己呼叫位於另一台伺服器上的另一個網路共享上的執行檔的腳本。執行檔將立即崩潰並出現錯誤0x0000006。事件日誌只是這樣說:Windows cannot access the file for one of the following reasons: there is a problem with the network connection, the disk that the file is stored on, or the storage drivers installed on this computer; or the disk is missing. Windows closed the program Setup.exe because of this error.

這是腳本(儲存在 上\\WIN2K8R2-F-01\Remote Applications):

@ECHO OFF

IF DEFINED ProgramFiles(x86) (
   ECHO DEBUG: 64-bit platform

   SET _path="C:\Program Files (x86)\Canam"
) ELSE (
   ECHO DEBUG: 32-bit platform

   SET _path="C:\Program Files\Canam"
)

IF NOT EXIST %_path% (
   ECHO DEBUG: Folder does not exist

   PUSHD \\WIN2K8R2-PSA-01\PSA Data\Client

   START "" "Setup.exe" "/q"

   POPD
) ELSE (
   ECHO DEBUG: Folder exists
)

以管理員身份手動執行腳本也會導致相同的錯誤。設置具有相同目標和參數的快捷方式效果很好。手動呼叫執行檔也可以。

不確定是否重要,但安裝程序基於 dotNETInstaller。雖然不知道是什麼版本。

我將不勝感激有關解決此問題的任何建議。提前致謝!

更新

我非常懷疑這很重要,但是託管腳本的網路共享是共享驅動器,而執行檔的腳本引用的網路共享是共享文件夾。

此外,兩個共享都Domain Computers列出了共享和安全選項卡的完全訪問權限。並且PUSHD無需將路徑括在引號中即可工作。

更新 2

如果我在客戶端機器上手動打開 CMD 並輸入,PUSHD "\\WIN2K8R2-PSA-01\PSA Data\Client"我會正確地將目錄掛載為驅動器。如果我然後輸入START "" "Setup.exe" "/q"安裝程序,它將完全按照它應該的方式啟動,它實際上會安裝應用程序。

更新 3

在通過ECHO語句進行一些調試時,我開始TXT將文件輸出到C:\客戶端機器上的驅動器。在我打電話後,我PUSHDECHO看看%CD%目前目錄是什麼。如果它成功掛載了遠端目錄,它最終會輸出C:\Windows不像它應該的那樣。{?}:\Client

我認為這與我在螢幕頂部收到的消息有關,即不支持 UNC 路徑,等等等等,即使腳本的其餘部分實際執行。

仍在尋找有關使其正常工作的建議。

可能對您有所幫助的建議。

1)

您可以使用 sysinternal 的 psexec 以 SYSTEM 身份打開 cmd 視窗,以調試“psexec \127.0.0.1 /s cmd” 從那裡您可以“逐行”瀏覽腳本以查看失敗的位置

2)

您可以修改腳本,使其在帶有“%~dp0”前綴的目前目錄中執行

您是否嘗試過跳過 START 命令?

PUSHD \WIN2K8R2-PSA-01\PSA 數據\客戶端

%~dp0Setup.exe" “/q”

在共享路徑周圍加上引號。您在共享名稱中有一個空格,我假設這就是導致問題的原因。

引用自:https://serverfault.com/questions/442524