我有一个非常有趣的问题。
我使用带有“runas”动词的 Process.Start 以管理员身份运行进程,即。
string currentstatus;
ProcessStartInfo startInfo = new ProcessStartInfo();
Process myprocess = new Process();
try
{
startInfo.FileName = "cmd"; //
startInfo.Verb = "runas";
startInfo.Arguments = "/env /user:" + "Administrator" + " cmd";
startInfo.RedirectStandardInput = true;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false; //'required to redirect
startInfo.CreateNoWindow = true; // '<---- creates no window, obviously
myprocess.StartInfo = startInfo; //
myprocess.Start(); //
System.IO.StreamReader SR;
System.IO.StreamWriter SW;
Thread.Sleep(200);
SR = myprocess.StandardOutput;
SW = myprocess.StandardInput;
SW.WriteLine(commandexecuted); // 'the command you wish to run.....
SW.WriteLine("exit"); // 'exits command prompt window
Thread.Sleep(200);
currentstatus = SR.ReadToEnd();
SW.Close();
SR.Close();
}
catch (Exception e)
{ }
据说已执行命令的给出为
exp *****/******@!!!!!!! owner =!!!!!!!! file =D:/SS.dmp
现在我的问题是
1)当我通过右键单击 cmd.exe 并选择“以管理员身份运行”手动运行上述查询时,它工作正常,但没有它会抛出错误
2)所以我需要通过代码执行该过程。
我不知道我哪里出错了?
这只是采用 oracle 转储的方式,否则它可能有其他方式?
等待您的宝贵回复和意见......
更新 1)
我也使用此代码检查当前用户是否是管理员
private static bool IsAdministrator()
{
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
return principal.IsInRole(WindowsBuiltInRole.Administrator);
}
它返回给我,因为当前用户只是管理员。
对我上述问题的任何建议!