我有一个bat文件,可以将文件从一个位置复制到另一个位置.
@H_502_5@
@H_502_5@
所以这对我不起作用. @H_502_5@我试图设置管理员的用户名/密码 @H_502_5@
我不知道如何授予他这些权限. @H_502_5@请帮忙! @H_502_5@EDITED @H_502_5@谢谢你的回复!
我花了几个小时试图处理这个问题,因为它总是发生我发布了我的问题,并找到了解决方案:) @H_502_5@为了避免您必须收到“句柄无效”消息 @H_502_5@
SET SRC=%1 SET DEST=%2 xcopy /Y/I %sRC%\*.txt %DEST%\temp echo Done!@H_502_5@我正在尝试通过C#程序运行此文件 @H_502_5@
var psi = new processstartinfo(filetoRun); psi.Arguments = args; psi.RedirectStandardOutput = true; psi.RedirectStandardError = true; psi.WindowStyle = ProcessWindowStyle.Hidden; psi.UseShellExecute = false; psi.CreateNowindow = true; Process cmdProc = Process.Start(psi); StreamReader output = cmdProc.StandardOutput; StreamReader errors = cmdProc.StandardError; cmdProc.WaitForExit();@H_502_5@蝙蝠文件被执行,我可以看到’完成!’输出中的消息,但不复制文件. @H_502_5@它的唯一工作方式是 @H_502_5@
psi.UseShellExecute = true; psi.RedirectStandardOutput = false; psi.RedirectStandardError = false;@H_502_5@但在这种情况下,我必须禁用输出/错误重定向,我需要它们.
所以这对我不起作用. @H_502_5@我试图设置管理员的用户名/密码 @H_502_5@
psi.UserName = username; psi.Password = password;@H_502_5@登录成功,但我在StandardError流中收到“句柄无效”消息. @H_502_5@我想我正在尝试运行的进程没有权限复制文件和
我不知道如何授予他这些权限. @H_502_5@请帮忙! @H_502_5@EDITED @H_502_5@谢谢你的回复!
我花了几个小时试图处理这个问题,因为它总是发生我发布了我的问题,并找到了解决方案:) @H_502_5@为了避免您必须收到“句柄无效”消息 @H_502_5@
psi.RedirectStandardInput = true;@H_502_5@但是现在我可以看到cmd.exe窗口,如果设置了UserName,那就不好了.
解决方法
你错过了
@H_502_5@
@H_502_5@
psi.Domain = "domain"; psi.Verb ="runas"; //if you are using local user account then you need supply your machine name for domain@H_502_5@试试这个简单的片段应该适合你 @H_502_5@
void Main() { string batchFilePathName =@"drive:\folder\filename.bat"; processstartinfo psi = new processstartinfo(batchFilePathName); psi.Arguments = "arg1 arg2";//if any psi.WindowStyle = ProcessWindowStyle.Hidden; psi.UseShellExecute = false; psi.Verb ="runas"; psi.UserName = "UserName"; //domain\username psi.Domain = "domain"; //domain\username //if you are using local user account then you need supply your machine name for domain psi.WindowStyle = ProcessWindowStyle.Hidden; psi.UseShellExecute = false; psi.Verb ="runas"; Process ps = new Process(psi); Process.Start(ps); }