从注册表中删除文件夹 - 权限问题

时间:2012-01-03 14:47:21

标签: c# winforms registry

我正在尝试从注册表中删除一个文件夹。假设我要删除文件夹

Software\TeamViewer

我已经编写了代码但它给出了一个例外情况“你不能写”。我猜它在Permission& amp;中遇到了一些问题。访问权限。

string keyapath = @"Software\TeamViewer";
RegistryKey regKeyAppRoot = Registry.CurrentUser.OpenSubKey(keyapath);
regKeyAppRoot.DeleteSubKeyTree(keyapath);

如何授权我的软件从注册表中删除文件夹?

修改 我有我的系统的管理员权限。我是否仍需要通过我的代码专门为应用程序分配权限?

3 个答案:

答案 0 :(得分:5)

带有一个参数的OpenSubKey方法打开读取键。使用OpenSubKey方法的其他变体:

OpenSubKey(String, Boolean) - 传递true第二个参数以打开具有通用写访问权限的密钥

OpenSubKey(String, RegistryKeyPermissionCheck) - 允许对子键的权限检查进行一些精确控制

OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights) - 如上所述,但您可以准确指定所需的权利。

有关详细信息,请参阅MSDN。

答案 1 :(得分:2)

您的应用程序需要admin权限才能更改注册表中的数据。 要获得这些权限,您的应用程序的mainfest需要包含一些值,告诉Windows应用程序需要更多权限。

Google uac .netuac c#(UAC =用户帐户控制)

或者只是看一下这篇文章。

Create and Embed an Application Manifest (UAC)

答案 2 :(得分:1)

您应该在项目中创建清单文件(右键单击您的项目,添加新项目,清单文件)。然后打开它,在里面你会看到:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
        <security>
            <requestedPrivileges>
                <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> // Put this to invoke UAC for admin rights
            </requestedPrivileges>
        </security>
    </trustInfo>
</assembly>

然后,当您运行应用程序时,它会提示您输入uac,然后程序将以管理员身份运行,希望能为您提供所需的访问权限。

希望这有帮助!