Vista系统下面在系统盘c盘下面用fopen创建文件遇到问题

MorningTea 2007-01-03 12:11:55
有接触过vista系统的人吗?我想问用fopen创建的文件在vista系统下面用创建文件有问题? 我这样用:
FILE *fp;
if(fp=fopen("C:\\myfile.ini","wt+")==NULL) MessageBox(NULL,_T("can't open file\n"),_T("msg"),MB_OK);
用在window 2k下面很好,在vista下面呢,如果是在c盘创建,不成功,c盘是我的系统盘,d盘创建成功,但是我用vs2005跟踪,用GetLastError来扑捉错误码,在c和d盘创建都是同样的错误码:131 :试图移动文件指针到文件开头之前。 唯一不同是我在c盘不能创建文件。我执行的帐户都是administrator权限,都用权限操作文件。
不过我发现一个问题:我手动在vista创建文件,然后修改可以,我随便copy一份文件到c盘的任何位置,我都没有权限修改,一定要加上我当前帐户有修改权限才可以。明明属于administrator的帐号,还不容许修改文件。真的弄不懂vista的文件管理怎么做的。还有用code的产生文件,在c盘,拥有管理员的权限也不能创建文件。报131的错误。这个错误因为什么产生,要如何让它不再出现呢?请大家给点建议。谢谢。
...全文
1016 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
MorningTea 2007-01-18
  • 打赏
  • 举报
回复
jiangsheng(蒋晟.Net[MVP]) ( ) 信誉:100 Blog 2007-1-6 0:38:37 得分: 0


You can use ShellExecute to start a secondary executable as the administrator, or separate out the necessary code into a COM object and execute that with CoCreateInstanceAdmin

-->我还不知道你说的方法如何做。不过我先让客户去体验下,然后再做决定,我可以改为写注册表,我其他code都是这样做,就没有问题。
先揭贴了。我自己再好好想想。基本上我不算完全没有解决方法。




FindFullMoon 2007-01-10
  • 打赏
  • 举报
回复
VISTA的权限管理是不是和以前不太一样了呢
蒋晟 2007-01-06
  • 打赏
  • 举报
回复
You can use ShellExecute to start a secondary executable as the administrator, or separate out the necessary code into a COM object and execute that with CoCreateInstanceAdmin
MorningTea 2007-01-05
  • 打赏
  • 举报
回复
我昨天尝试在c盘非系统目录建立createfile,没有问题,在系统目录下面就弹出如此的对话框。今天这样尝试了下,关闭UAC,然后再安装我的软件,运行没有问题。

不过我现在纳闷的是,我要如何让我的code在执行需要管理员权限的时候让系统给我弹出一个对话框,然后让user用管理员权限给予approval后让我的code往下执行了????????我并不想我的用户关闭UAC来用,希望享受UAC保护下执行我的code。
蒋晟 2007-01-04
  • 打赏
  • 举报
回复
UAC搞的吧
管理员默认是没这些权限的,要提示用户确认才有权限
MorningTea 2007-01-04
  • 打赏
  • 举报
回复
我昨天晚上给微软发了封邮件。
我今天过来公司已经有回应,我要去看看才知道结果。谢谢啦。我真的去问,他们回应也很快
MorningTea 2007-01-04
  • 打赏
  • 举报
回复
我想这个有可能是UAC.
我问微软是:Can I creat files in system disk by programming? If so, are there some additional things I should pay attention to?
他们回信就是给了我一个描述UAC的页面。我还没有细看因为我有另外一个项目也会在c盘创建temp文件。完全没有问题,是在32bit 2k/xp移植到32bit的vista。 我没有做复杂的修改,因为vista对code检查的比2k严格,我稍微修改了一些关于有溢出可能的地方,就没有问题了。
我会先看为什么我的另外套code为什么可以run起来,然后再来看当前的问题。
jixingzhong 2007-01-03
  • 打赏
  • 举报
回复
我本人没有接触 vista(我是土星人=_=)

这样的问题,
是不是发个邮件,
问问 ms 比较好 ?
jixingzhong 2007-01-03
  • 打赏
  • 举报
回复
if(fp=fopen("C:\\myfile.ini","wt+")==NULL)
==》
if((fp=fopen("C:\\myfile.ini","wt+"))==NULL)

记得好像 赋值运算符 是级别最低的吧?
用 括号修正一下运算顺序 ....
ReverseEngineering 2007-01-03
  • 打赏
  • 举报
回复
MS有个新闻组。
MorningTea 2007-01-03
  • 打赏
  • 举报
回复
谢谢~~~
其实我原本用WritePrivateProfileString来修改配置文件,但是创建文件时候不成功,然后我手动copy一个过去,他也不行。我然后手动把文件属性加入我的帐号进去,容许我帐号有修改权限。然后我的程序就可以运行ok,可以写入。所以问题就是在系统盘不能创建文件。。。
我再想想其他办法,我还不清楚在ms网站什么地方可以问,我去了解下。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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