vista下面修改注册表失败

还没淹死的鱼 2009-08-26 04:57:09
HKEY hkeyToUse = HKEY_CURRENT_USER;
HKEY key = NULL;
LONG res;
char *pKeyName = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\.pdf\\UserChoice";
res = RegOpenKeyExA(hkeyToUse, pKeyName, 0, KEY_READ | KEY_WRITE, &key);
if (ERROR_SUCCESS != res)
{
res = RegCreateKeyExA(hkeyToUse, pKeyName, 0, NULL, 0, KEY_READ | KEY_WRITE, NULL, &key, NULL);
if (ERROR_SUCCESS != res) {
goto Exit;
}
}
res = RegSetValueExA(key, "Progid", 0, REG_SZ, (const BYTE*)exePath, strlen(exePath)+1);
if (ERROR_SUCCESS != res)
{
goto Exit;
}
.........

打开时返回5, 可是我已经以管理员方式运行了.
在xp下面可以运行.
打开时把KEY_WRITE去掉可以返回0, 但无法修改.

实在没办法了, 是不是漏了什么步骤?
...全文
123 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
还没淹死的鱼 2009-08-31
  • 打赏
  • 举报
回复
经多次测试, 提升权限后就可以了

以前没成功的原因是工程名和最后生成的文件名不一样

但有一台计算机怎么都不行, 不管他了
Ghost90 2009-08-27
  • 打赏
  • 举报
回复
可能是权限问题,VISTA 有个叫作 UAC的东东,它把权限管得很严
打开UAC 控制,VISTA 对于每个注册键都有权限控制,可以单独设置,默认user只有读取权限
MoXiaoRab 2009-08-26
  • 打赏
  • 举报
回复
gDebugShowLinks这玩意哪里来的?你再好好检查下,肯定可以的
还没淹死的鱼 2009-08-26
  • 打赏
  • 举报
回复
还没搞定:
直接包含的话提示:
error C2059: 语法错误 : “<”
error C2065: “gDebugShowLinks”: 未声明的标识符

作为资源加进来编译是过了, 但没起作用......
MoXiaoRab 2009-08-26
  • 打赏
  • 举报
回复
比如你写的EXE叫Test.exe,那么那个就叫Test.exe.manifest,也可以先在记事本中存好放进res文件夹,然后工程中包含进来,就直接编译
还没淹死的鱼 2009-08-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ghost90 的回复:]
改成 RegOpenKeyExW 把A都改成 W
Vista 好像用的是 UNICODE
[/Quote]

不是这个问题, 我的工程属性都改成多字节了

谢谢回复
还没淹死的鱼 2009-08-26
  • 打赏
  • 举报
回复
/提升和恢复权限函数
int EnablePrivilege(LPCTSTR lpszPrivilegeName,BOOL bEnable)
{
HANDLE hToken;
TOKEN_PRIVILEGES tp;
LUID luid;
if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES |
TOKEN_QUERY | TOKEN_READ,&hToken))
return 0; //打开进程的令牌环
if(!LookupPrivilegeValue(NULL, lpszPrivilegeName, &luid))
return 1; //修改进程权限
tp.PrivilegeCount = 1; //赋给本进程特权
tp.Privileges[0].Luid = luid;
tp.Privileges[0].Attributes = (bEnable) ? SE_PRIVILEGE_ENABLED : 0;
AdjustTokenPrivileges(hToken,FALSE,&tp,NULL,NULL,NULL);
//通知Windows修改本进程的权限
CloseHandle(hToken); return 0;
}
权限提升后, 的确有进步, 但还是不能修改UserChoice下面的内容
资源也加了,是不是还要在资源属性里把文件名改为Manifest? 改了, 没起作用

我只是想修改pdf文件的默认打开方式, 没想到在vista下这么麻烦...
Ghost90 2009-08-26
  • 打赏
  • 举报
回复
改成 RegOpenKeyExW 把A都改成 W
Vista 好像用的是 UNICODE
Ghost90 2009-08-26
  • 打赏
  • 举报
回复
换成 RegOpenKeyEx
RegCreateKeyEx
RegSetValueEx
试试
带A的不是SDK平台函数
MoXiaoRab 2009-08-26
  • 打赏
  • 举报
回复
还有,添加个Manifest文件

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="test.exe.manifest"
type="win32"
/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

该代码添加到VC资源中即可, 添加方式:

添加一个“custom”资源,"resource type"填24,把资源ID改为1
MoXiaoRab 2009-08-26
  • 打赏
  • 举报
回复
提个SE_DEBUG_NAME权限试试,很多注册表提权后就能写了
1.无需第三方软件,美化Windows XP,让你赏心悦目的使用电脑。 2.美化最全面,包括启动和登陆画面、声音、主题、图标风格等。 3.采用更新资源而非直接替换文件的方法,不用担心补丁升级问题。 4.占用资源最少,美化精致、实用、安全,众多功能请查看开始菜单。 2.4版更新说明: 1.兼容Windows XP SP3,也可用于 SP2 。 2.去掉不常用的侧边栏、文件夹变色、透明特效、地址特效、收藏夹链接特效。 3.增加圆形工具栏。将鼠标移到屏幕左边边缘即可显示,再移动一次隐藏。 ******************************************************** FAQ: 圆形快捷工具的显示和隐藏:将鼠标移到屏幕左边边缘即可,自定义设置右击点“选项”。 增加眼科专家推荐的颜色,选用不同主题即可启用或禁用。 网页使用或禁用雅黑字体的方法:打开IE,“工具”-“Internet选项(O)...”,点击“字体(N)...”在“网页字体”下选中或不选“微软雅黑” 1.不喜欢网页背景的绿色,如何去掉?  ※ 打开IE,“工具”-“Internet选项(O)...”,点击“辅助功能(E)...”将打勾的全去掉,不选。这个绿色是眼科专家推荐的,能有效保护眼睛。 2.设置主题没效果。  ※ 这是因为你的系统的没有进行主题限制破制,点击开始菜单->“XP美化包”->“破解主题限制”,按提示操作。 3.安装完成后图标并没有改变。  ※ 这是因为系统图标缓存所致,而在安装时由于其它软件造成清理失败,点击开始菜单的所有程序-XP美化包-重建图标,即可有效果。 4.升级补丁后图标又回复成XP的,如何解决。  ※ 点击开始菜单->“XP美化包”->“修复图标”,等待完成后即可。 5.我不喜欢雅黑字体,如何禁用?  ※ 若不喜欢主题雅黑字体则进入windows\fonts目录下将雅黑字体删除。 6.开机提示CircleDock错误?  ※ 圆形Dock工具面要 Microsoft.NET FrameWork 2.0支持,安装.NET即可。 7.卸载后硬盘图标没有了?  ※ 正常情况不会,如果你禁用了更改注册表(某些软件会禁用)则会出现。请在注册表中手动删除HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons即可。 其它:一般情况下使用本美化包没有任何问题,且可完全卸载。但如果系统中有病毒、垃圾插件或其它软件造成不当操作,则可能引起本美化包的异常,请自己解决。 -----倚风 2009年3月3日 应群众要求加了个图片,话说作者做好了也不放个图,真是不方便啊 ,安装时间可能有点长,请耐心等待 图片是2.3版的,2.4版去掉了侧边栏

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧