2013-09-25 64 views
0

我寫了這個簡單的控制檯程序(writeTxt.exe):使用「運行方式」命令寫入文件的程序(Windows Server 2008中)

#include "stdafx.h" 

using namespace std; 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    char  *fileName = "test.txt"; 
    ofstream outStream(fileName, ios::out); 

    outStream << "This is a very simple test." << endl; 

    return 0; 
} 

然後我的Windows Server 2008使用runas控制檯上運行命令(I登錄作爲不同用戶從User1):

runas /user:User1 writeTxt.exe 

但程序不產生文件test.txt。如果我以User1的身份登錄到服務器並運行該程序,它可以正常工作。我必須設置一些東西才能正確運行嗎?

回答

1

我相信runas總是啓動程序與(相當於道德或)設置爲C:\Windows\System32他們的工作目錄,而不是無論你的當前工作目錄是,當你調用runas

如果User1有權寫入該目錄,那就是該文件的位置。如果他們沒有這樣的許可,那麼該程序將失敗。

+0

我沒有找到一種方法來明確地設置Windows Server 2008中'C:\ Windows \ System32'的權限(使用'屬性 - >安全性'選項卡),甚至以管理員身份。因此,我設置了'User1'帳戶作爲管理員帳戶(我假設它具有對C:\ Windows \ System32的寫權限),並嘗試過這種方式,但該程序仍然不會生成'test.txt'。 – ArthurN

+1

@ArthurN - 在我的回答中,我本可以做得更加開闊 - 而不是試圖讓User1寫入該目錄,我會改變程序,使它不會嘗試寫入它的當前工作目錄(至少,而不是沒有設置其他東西) - 或者傳遞一個完整的路徑作爲參數給程序。 –

+0

謝謝!在代碼中顯式設置完整路徑名稱可解決此問題。 – ArthurN

相關問題