大家只需要随便建一个最简单的MFC,什么都不用干,然后在任何一个地方加入如下代码: CRegKey cregkey;
char filepath[300];
CString childkey="Software\\Microsoft\\Windows\\CurrentVersion\\Run";
cregkey.Create(HKEY_LOCAL_MACHINE,childkey);
GetModuleFileName(NULL,filepath,300);
cregkey.SetValue(filepath,"Gu");
cregkey.Close(); CFile x;
char y[5];
if(x.Open("abc.TXT",CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite)==0){
MessageBox("不能打开");
}
if(x.Read((void*)y,4)==0){
int x=GetLastError();
MessageBox("不能读");
}然后你就会发现,直接双击正常开启,重启后自动开启就会弹出“不能读”,是不是很奇怪,这是世界未解之谜,只需要几行代码!不信你们试试看!!看起来多正常的代码!!就是不行!!快要疯了!!!但是把程序的快捷键放进开始菜单的启动里然后开机重启却是正常的!!神啊!我已经发了3个贴了都没人能真正解决这几行代码的问题吗!!!!!
char filepath[300];
CString childkey="Software\\Microsoft\\Windows\\CurrentVersion\\Run";
cregkey.Create(HKEY_LOCAL_MACHINE,childkey);
GetModuleFileName(NULL,filepath,300);
cregkey.SetValue(filepath,"Gu");
cregkey.Close(); CFile x;
char y[5];
if(x.Open("abc.TXT",CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite)==0){
MessageBox("不能打开");
}
if(x.Read((void*)y,4)==0){
int x=GetLastError();
MessageBox("不能读");
}然后你就会发现,直接双击正常开启,重启后自动开启就会弹出“不能读”,是不是很奇怪,这是世界未解之谜,只需要几行代码!不信你们试试看!!看起来多正常的代码!!就是不行!!快要疯了!!!但是把程序的快捷键放进开始菜单的启动里然后开机重启却是正常的!!神啊!我已经发了3个贴了都没人能真正解决这几行代码的问题吗!!!!!
解决方案 »
- 想找到两幅图片重叠的一列
- 菜鸟求安装包制作软件及具体方法步骤
- 抓紧时间申请MVP啦!!!
- 哪位有中国驴社区的邀请码
- 关于WM_NCHITTEST的一个问题
- 使用ADO操作SQL2000是遇到的问题:新加入记录或删除记录后取记录老是出错,什么原因啊?在线等...........
- 很难解决的简单问题,100分求解,不够再加。(我还有400多分)
- 怎样找一个程序员女朋友?请教高手。
- MFC Clistctrl控件中按下 enter键,控件中焦点后移两格。如图
- 前辈们,我C++写OPC Client的AddItems运行错误,求助
- 请问控制台程序如何处理BMP并保存?
- MFC 输出字符串到主程序框(GetWindowTextLength出现问题)
x.Open("c:\\abc.TXT",估计是当前路径的问题GetCurrentDirectory看看当前路径是什么
MessageBox("不能打开");
}
if(x.Read((void*)y,4)==0)
{//这个新产生的文件长度为0,读什么都错的。
int x=GetLastError();
MessageBox("不能读");
}
//所以:
1.去:CFile::modeCreate
2.设置当前路径到有问题的目录。
SetCurrentDirectory()
为什么!!为什么!!!为什么GetCurrentDirectory后路径居然变成C:\Documents and Settings\Administrator
我看过在注册表的地址明明是E:\软件\baby\Debug\baby.exe的!!怎么变成这样了!!!我不想用绝对路径啊!我这个软件是要放其他电脑上的!难道相对路径不可以吗!
我看过在注册表的地址明明是E:\软件\baby\Debug\baby.exe的!!怎么变成这样了!!!我不想用绝对路径啊!我这个软件是要放其他电脑上的!难道相对路径不可以吗!
我看过在注册表的地址明明是E:\软件\baby\Debug\baby.exe的!!怎么变成这样了!!!我不想用绝对路径啊!我这个软件是要放其他电脑上的!难道相对路径不可以吗!还有,那个abc.txt文件我事先放有东西进去的!
CString str;
str=theApp.m_ExePath+"\\c.txt";
if(x.Open(str,CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite)==0){
MessageBox("不能打开");
}
在软件初始化函数里:
WCHAR Buff[MAX_PATH];//如果是多字节,就char Buff[MAX_PATH];
CString str;
str="取路径错误";
if(GetModuleFileName( NULL,Buff,256 )==0)
{
AfxMessageBox(str);
}
else
{
theApp.m_ExePath=Buff;
theApp.m_ExePath=theApp.m_ExePath.Left(theApp.m_ExePath.Find("abc.exe"));
}
GetModuleFileName
BOOL CreateProcess(
LPCTSTR lpApplicationName, // name of executable module
LPTSTR lpCommandLine, // command line string
LPSECURITY_ATTRIBUTES lpProcessAttributes, // SD
LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD
BOOL bInheritHandles, // handle inheritance option
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // new environment block
LPCTSTR lpCurrentDirectory, // current directory name
LPSTARTUPINFO lpStartupInfo, // startup information
LPPROCESS_INFORMATION lpProcessInformation // process information
);
中的LPCTSTR lpCurrentDirectory,即程序的启动目录。
#include <shlwapi.h>
#pragma comment(lib, "shlwapi.lib")TCHAR szAppPath[MAX_PATH+1] = {0};
GetModuleFileName(NULL, szAppPath, MAX_PATH);
PathRemoveFileSpec(szAppPath);
_tcscat_s(szAppPath, _T("\\abc.TXT"));