2016-09-27 49 views
-1

我试图让我的程序写入HKLM键。为了做到这一点我试图创建一个清单文件:清单在VS2015中不起作用

<?xml version="1.0" encoding="utf-8"?> 
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
    <security> 
     <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> 
     <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
     </requestedPrivileges> 
    </security> 
    </trustInfo> 

    <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 
    <application> 
    </application> 
    </compatibility> 
</assembly> 

但即使有这个文件,我仍然得到异常:

"System.UnauthorizedAccessException" in mscorlib.dll 
Cannot write to the registry key. 

我使用VS2015。我点击创建新元素,然后选择Manifest文件。将名称设置为MyProgram.exe.manifest。然后在项目属性中选择适当的清单。最后,我将Manifest文件中的执行级别更改为requireAdministrator并重建程序。

但是当我执行MyProgram.exe时,它永远不会显示UAC窗口,当我尝试写入HKLM时会引发异常。所以我怀疑清单工作不正常。

请指教。 谢谢!

+0

“然后在项目属性中选择适当的清单”。这没有任何意义,所以无论你在那里做什么,只是不这样做。 –

+0

非常有用,谢谢:/ – Murad

回答

-1

你可以这样做:

  • 使用管理员身份运行程序。
  • 没有权限设置权限。
+0

我试图以管理员身份运行它。没有帮助。 – Murad

+0

您可以更换其他计算机,然后运行MyProgram.exe.If它可以运行成功,您可以检查您的计算机配置。 – Tiger