【问题标题】:STATUS_ACCESS_VIOLATION when using fprintf in C (granting admint rights with pop-up box)在 C 中使用 fprintf 时的 STATUS_ACCESS_VIOLATION(通过弹出框授予管理员权限)
【发布时间】: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)之后,它现在可以解决下一个问题:是否可以在程序启动时询问用户的权限,以便它可以以管理员权限运行

【问题讨论】:

  • 一定是权限问题。尝试以管理员身份运行程序。
  • 是的,现在确实可以使用
  • 我会推荐一种更安全的方法:将日志存储在其他地方。从安全的角度来看,以管理员身份运行程序并不是一个好主意,除非您确实必须这样做

标签: c crash printf rights


【解决方案1】:

只有管理员用户才允许将文件写入 C:/Windows/System32/。

授予程序管理权限,或者您也可以通过以管理员身份运行程序来运行程序。

【讨论】:

  • 如何为用户提示一个弹出框,以便他在运行程序时选择授予管理员权限?
  • 在windows中可以搜索granting admin permission to program.我建议使用Linux发行版学习C。
  • 如果答案令人满意,您应该投票或批准答案
  • 没关系。希望你能得到答案
猜你喜欢
  • 2020-09-04
  • 2013-09-22
  • 2015-06-19
  • 2013-12-24
  • 1970-01-01
  • 2020-12-11
  • 1970-01-01
  • 2012-07-12
  • 2018-11-12
相关资源
最近更新 更多