2011-08-12 78 views
2

我有Cygwin在Windows 7機器上運行,並運行Cygwin ssh服務器。在Linux上我有一個shell腳本,我想要做的是否可以從Cygwin ssh會話中正確執行qwinsta?

ssh [email protected] "qwinsta | grep Active" 

,看看誰是登錄,這爲Windows Server 2008 R2機器工作正常,但似乎對Windows 7的

問題如果我試試這個Windows 7的機器上,我得到:

bash: qwinsta: command not found 

現在,這裏是怪事開始的地方......

如果我登錄到Windows 7計算機通常,並期待在C:\視窗\ System32與Windows資源管理器,我看到qwinsta.exe。如果我打開CMD會話並在C:\ Windows \ System32中執行dir,我會看到qwinsta.exe。如果我打開Cygwin的外殼,並做了ls qwinsta.exe在/ cygdrive/C /的Windows/System32下,我得到:

ls: cannot access qwinsta.exe: No such file or directory 

如果我從Cygwin的殼做cmd /c dir C:\\\\Windows\\\\System32\\\\qwinsta.exe,我得到一個「文件未找到」

如果我將qwinsta.exe複製到我的Cygwin主目錄中,那麼它可以在我的主目錄中用ls顯示。如果我嘗試從Cygwin的shell中運行qwinsta的這個本地副本,它運行,但它也輸出線:在Windows 7

{Message(): LoadString failed, Error 15105, (0x00003B01)} 

怎麼了qwinsta?

回答

2

問題是qwinsta.exe實際上並不位於C:\Windows\System32。它在

C:\Windows\winsxs\amd64_microsoft-windows-t..commandlinetoolsmqq_31bf3856ad364e35_6.XX.XXX.XXXX_none_XXXXXXXX\qwinsta.exe 

居然發現使用上述路徑(或軟鏈接到相同的),因爲它存在的任何機器上運行qwinsta.exe,並不會要求你的可執行文件複製到你的主目錄。

錯誤消息{Message(): LoadString failed, Error 15105, (0x00003B01)}是關於Multilinugal用戶界面(本地化)系統無法找到正在運行的程序的錯誤消息本地化信息的(請參閱System Error Codes)。在這種情況下,似乎cygwin外殼不提供qwinsta.exe它需要在您的語言的本地文件夾中找到qwinsta.exe.mui的信息(通常爲C:\Windows\System32\en-US或您的語言環境恰好是)。查看此文件夾有點令人誤解,因爲資源管理器將在此目錄中顯示該文件,但是當您運行ls /cygdrive/c/Windows/System32/en-US時,沒有qwinsta.exe.mui文件。我懷疑這與NTFS中的新鏈接結構有關(請參閱mklink命令),但我還沒有弄清楚如何解決這部分問題。

+0

很高興知道文件實際存在的位置。不幸的是,從這個位置運行它到將它複製到我的主目錄時執行沒有區別。在這兩種情況下,它仍會給出相同的運行時錯誤消息。但是,我發現如果我將qwinsta.exe複製到我的主目錄,並創建一個「en-US」目錄並從C:\ Windows \ System32 \ en-US中放置一個qwinsta.exe.mui的副本我的「en-US」目錄,然後我可以從主目錄運行qwinsta,而不會彈出運行時錯誤消息。 – likso

+0

多接口的答案爲我提供了足夠有用的信息,以便找到可行的解決方案,因此我將它標記爲接受的答案。 – likso

+0

@multipleinterfaces,在這百萬個文件夾中,你是如何計算出位置的? – Pacerier

0

解決:

  1. 首先,去C:\Windows\winsxs\amd64_microsoft-windows-t..commandlinetoolsmqq_31bf3856ad364e35_6.1.7600.16385_none_851e6308c5b62529 (複製和粘貼該位置的作品一樣以及手動找到它。) 你應該找到三個文件:Msg.exeQuser.exe,和qwinsta.exe。 這些文件複製到文件夾C:\Windows\system32

  2. 接下來,進入C:\Windows\winsxs\amd64_microsoft-windows-t..etoolsmqq.resources_31bf3856ad364e35_6.1.7600.16385_en-us_7bef78d9f4a6a8ac

你應該發現三個類似命名的文件,除了這些將與.mui結束。

  1. 將所有這三個文件複製到您的C:\Windows\system32\en-US文件夾中。

  2. 現在嘗試運行msg程序。它應該沒有問題地工作。

相關問題