2010-06-09 201 views
2

我有一个Windows窗体应用程序正在修改软件部分下的某些注册表项。 Vista非管理员抱怨说他们正在收到权限错误。我做了什么,它在这个帖子中称:注册表访问问题

Requested registry access is not allowed

创建一个app.manifest文件并粘贴什么在那里说。我需要这些值对准我的应用程序:

<assemblyIdentity version="1.0.0.0" name="MyApplication.app" /> 

此外,当我在释放模式编译,我只看到了* .vshost.manifest,而不是* .manifest的文件。我尝试重命名vshost,但如果我不是管理员,它仍然不起作用。

我想我在这里问的是如何部署这个清单文件?我搜索谷歌它,但无法找到任何好的信息。

+0

@James,我似乎记得应用程序开发人员被指示将永久应用程序状态存储在注册表中。不知道这是否改变,但知道MS ... – Lazarus 2010-06-09 11:41:13

+0

@詹姆斯:即使是由管理员运行的应用程序需要提升特权写入注册表或做类似的事 – abatishchev 2010-06-09 11:44:00

回答

2

在你指的是其他职位最重要的部分是这样的:

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
    <security> 
    <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> 
     <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
    </requestedPrivileges> 
    </security> 

通过设置requestedExecutionLevel为“requireAdministrator”,您的应用程序将要求在启动管理权限。这也会导致应用程序图标显示UAC盾图标叠加层(告诉用户此可执行文件需要管理员权限)。 您在输出目录中看不到清单文件的原因可能是因为默认设置是将清单嵌入到可执行文件中。您可以更改此设置以创建和使用外部清单。

对于Visual Studio中的清单选项,检查项目属性,然后选择配置属性 - >清单工具 - >输入和输出。您可以在其中指定将包含在清单中的其他清单文件,并指定是否要嵌入清单。

希望这会有所帮助。

+0

我去项目的属性。在应用程序下,我看到“资源”,并且有一个“manifest”文本框,并在那里显示“app.manifest”。有了我建立的这些设置,它只给了我.vshost。我没有看到名为“配置属性”的选项卡,虽然 – 2010-06-09 12:04:42

+0

您使用的是哪个版本的Visual Studio?我的指示基于VS 2005。 – humbagumba 2010-06-09 12:37:17