我正在运行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的完整路径,这完全不可移植。
问题2 :为什么以管理员身份运行不会授予我在注册表中创建/编辑密钥的权限?
我的域帐户位于“管理员”组中,我从未遇到任何问题。