Process.Start()没有按预期执行

4

如果我在管理员权限的命令提示符下运行takeown /F "C:\Program Files\Borland /A /R /D Y,我将取得对Borland文件夹的所有权。但是,如果我运行以下代码,则没有任何变化。尝试以管理员和普通用户身份运行。

Process process = new Process();
process.StartInfo.FileName = @"C:\Windows\System32\takeown.exe";
process.StartInfo.Verb = "runas";
process.StartInfo.Arguments = "/F \"C:\\Program Files\\Borland\" /A /R /D Y";
process.Start();
process.WaitForExit();  

我错过了什么吗?


我也有同样的问题。我尝试编写一个使用runas来处理服务的PowerShell脚本...但是没有成功。在我的看法中,runas != uac(在Powershell中它会在提示中要求输入密码,而不会弹出uac对话框)。我也很想找到这个问题的答案 :) - Jeff B
你是否启用了UAC?我在工作时这样做可以运行(并且UAC已禁用)。也许UAC正在阻止你这样做? - Jeff Mercado
这是在Windows 8上,UAC已经开启。 - JimDel
嗯,也许Windows 8有一种不同的(本地)运行进程的方式?你的程序设置为.net或winrt程序了吗?我想winrt对你可以调用哪些进程有限制。 - Jeff Mercado
3个回答

3

您需要在startinfo对象上将useshellexecute设置为false,才能通过UAC获得提示。


我添加了 "process.StartInfo.UseShellExecute = false;" 但似乎没有改变任何东西。 - JimDel
JimDel,你也有verb=runas这个动词吗?只有两者结合起来才能完成UAC提示。 - Alex
我没有注意到你正在使用Windows 8,也许微软已经改变了一些东西。但是,如果这两个值被设置了,我总是会收到UAC提示。 - Alex
谢谢Alex。请看我的回答,了解我做了什么。 - JimDel

0
一次Windows的格式化和重新安装似乎解决了问题。我希望我有一个更好的答案,但是经过多次搜索,我发现没有任何有效的方法。也许是某个现有的安全设置阻止了它的工作。

0

我遇到了同样的问题。 发布版本(而不是默认的“调试”)帮助了我。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接