我正在尝试从注册表中删除一个文件夹。假设我要删除文件夹
Software\TeamViewer
我已经编写了代码但它给出了一个例外情况“你不能写”。我猜它在Permission& amp;中遇到了一些问题。访问权限。
string keyapath = @"Software\TeamViewer";
RegistryKey regKeyAppRoot = Registry.CurrentUser.OpenSubKey(keyapath);
regKeyAppRoot.DeleteSubKeyTree(keyapath);
如何授权我的软件从注册表中删除文件夹?
修改 我有我的系统的管理员权限。我是否仍需要通过我的代码专门为应用程序分配权限?
答案 0 :(得分:5)
带有一个参数的OpenSubKey
方法打开读取键。使用OpenSubKey
方法的其他变体:
OpenSubKey(String, Boolean)
- 传递true
第二个参数以打开具有通用写访问权限的密钥
OpenSubKey(String, RegistryKeyPermissionCheck)
- 允许对子键的权限检查进行一些精确控制
OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights)
- 如上所述,但您可以准确指定所需的权利。
有关详细信息,请参阅MSDN。
答案 1 :(得分:2)
您的应用程序需要admin
权限才能更改注册表中的数据。
要获得这些权限,您的应用程序的mainfest需要包含一些值,告诉Windows应用程序需要更多权限。
Google uac .net
或uac c#
(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,然后程序将以管理员身份运行,希望能为您提供所需的访问权限。
希望这有帮助!