【发布时间】:2016-03-03 11:38:24
【问题描述】:
我是 C 的新手,这是我的第一个程序之一
当我选择 C:/Windows/System32/log.txt 作为写入路径时,我得到一个 STATUS_ACCESS_VIOLATION,另一方面,当我选择在与 .exe 文件相同的目录中写入时,一切正常。经过一番研究,我认为它必须与这条线有关
FILE *fp ;
当我调试代码时,调试器崩溃了
fp = fopen("C:/Windows/System32/log.txt", "a+");
代码
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>
void main()
{
FILE *fp ;
clock_t tic = clock();
fp = fopen("C:/Windows/System32/log.txt", "a+");
fprintf(fp, "TEXT \n");
fclose(fp);
clock_t toc = clock();
double time = (double)(toc - tic) / CLOCKS_PER_SEC;
char text[255];
sprintf(text, "The program did %f s to complete", time);
MessageBox(0, text, "Duration", MB_OK);
}
在 pranav 的提示(以管理员身份运行 .exe)之后,它现在可以解决下一个问题:是否可以在程序启动时询问用户的权限,以便它可以以管理员权限运行
【问题讨论】:
-
一定是权限问题。尝试以管理员身份运行程序。
-
是的,现在确实可以使用
-
我会推荐一种更安全的方法:将日志存储在其他地方。从安全的角度来看,以管理员身份运行程序并不是一个好主意,除非您确实必须这样做