2013-09-25 19 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

相关问题