想用Win7修改Program Files下的文件

时间:2011-02-01 15:13:27

标签: c# .net scripting windows-7 batch-file

我有一个小的C#程序来修改位于Program Files下的xml文件。该机器是Windows 7机器。这个小程序是由批处理文件(称为A.bat)启动的,因为我想将参数传递给它。

我有一个主批处理文件(称为M.bat),这是一个起点。 M.bat将启动安装程序并等待安装完成。然后M.bat将启动A.bat,它将使用参数启动我的小程序。

现在我得到以下例外:

System.UnauthorizedAccessException: Access to the path 'C:\Program Files\MyTest\Test.config' is denied.

我知道这是由Win7中更严格的安全性造成的。它在XP下工作正常。

我不能使用“以管理员身份运行”来启动M.bat或手动“以管理员身份运行”来启动A.bat,因为两者都会报告找不到目标可执行文件(因为起始位置不是真正的然后是“当前”的位置。

有没有办法在批处理文件中以管理员身份启动可执行文件?或者在C#程序中我可以给自己管理员权利吗?

或......

3 个答案:

答案 0 :(得分:4)

不是以对用户不可见/隐藏的方式......我建议找一种方法让它以管理员身份运行时运行。或者您可以设置应用程序清单(请参阅:http://www.enusbaum.com/blog/2007/08/26/how-to-run-your-c-application-as-administrator-in-windows-vista/)以管理员身份运行您的应用程序,这可能也可以。

最重要的是,除非您以管理员身份运行,否则您无法使用管理员权限运行,或者除非您的用户关闭UAC(根本不建议这样做)。

答案 1 :(得分:2)

您需要通过UAC提示提升您的权限。如this answer

中所述,向您的计划添加清单

答案 2 :(得分:1)

您应该在程序启动时请求管理员权限。看this sample