使用命令行参数在C#控制台应用程序中的Win7权限(注册表编写)

时间:2012-02-22 13:23:00

标签: c# windows-7 permissions registry console-application

我正在运行Win7 Pro x64 我创建了一个小型控制台应用程序,它从命令行获取参数,并根据这些参数和注册表中的配置进行一些操作。 主要目标是它应该是可移植的,我的意思是一个EXE文件。

我想制作类似“设置”的东西 - 根据用户的要求,应用程序应该使用默认配置值填充注册表,稍后可以更改。所以当用户使用参数启动它时,我决定我的应用程序应该运行“setup”。让我们说它应该是

myapp.exe --setup

我需要做的是(简短地说):

RegistryKey k = Registry.CurrentUser.OpenSubKey("SOFTWARE\\something\\else");
// the key exists, it's checked elsewhere
k.SetValue(optionName, optionValue);

当我这样做时,它抛出异常System.UnauthorizedAccessException。好的,我抓住了它,所以我可以通过MessageBox通知用户他应该以管理员身份运行它。

问题1 :如何使用命令行参数作为管理员轻松运行应用程序?
我的意思是,每个用户都需要从RUNAS /user:userName "myapp.exe --setup"运行它吗?是否有更简单的方法(简单如 RMB->以管理员身份运行但带参数)?
我尝试使用.bat制作myapp.exe --setup个文件并以管理员身份运行它们,但它需要拥有EXE的完整路径,这完全不可移植。

好的,还有一件事。我终于用RUNAS运行它并且抛出异常(捕获)。为什么?我做了一个简单的测试并关闭了“--setup”开关 - 所以app应该运行“setup”而不需要任何命令行参数。我用RMB点击它并选择“以管理员身份运行” - 相同!所以:

问题2 :为什么以管理员身份运行不会授予我在注册表中创建/编辑密钥的权限?

我的域帐户位于“管理员”组中,我从未遇到任何问题。

0 个答案:

没有答案
相关问题