2011-02-01 58 views
0

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

我有一个主批处理文件(称为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

我真的不知道你在问什么。未经用户许可,应用程序或批处理文件都不能将其权限提升为管理员权限。你已经知道*这是问题所在。你会不会更好地尝试修复你的代码中的错误,使你不能使用“以管理员身份运行”,即不要假设某个特定的起始位置? – 2011-02-01 15:17:46

回答

2

您需要通过UAC提示提升您的权限。按照this answer中的描述将清单添加到程序中。

4

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

底线,您不能以管理员权限运行,除非您以管理员身份运行,或除非您的用户关闭UAC(根本不推荐)。

1

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

相关问题