关于启动时运行

spacelion 2001-07-30 09:42:29
请问各位大虾,实现在win.ini中写入run=
的函数是什么
或者,其他可以运行启动的方法,函数(如:注册表等)
望ggjj们不吝赐教
...全文
104 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yuxuguang 2001-08-01
忘了
const TCHAR gcszAutoRunKey[]= _T("Software\\Microsoft\\windows\\CurrentVersion\\Run" );
还有
const TCHAR gcszWindowClass[] = _T("你想添加的键名");
回复
yuxuguang 2001-08-01
给你一个函数
BOOL CCDROMDlg::ProcessAutoRun(BOOL bIsAdd)//程序自动运行
{
HKEY hKey;
LONG lRet, lRet2;
DWORD dwLength, dwDataType;
TCHAR szItemValue[MAX_PATH], szPrevValue[MAX_PATH];
TCHAR szBuffer[MAX_PATH];

// 得到程序全路径名
GetModuleFileName( NULL, szItemValue, MAX_PATH );

// 打开注册表键
lRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE, gcszAutoRunKey,
0, KEY_READ | KEY_WRITE, &hKey );
if( lRet != ERROR_SUCCESS )
return FALSE;

// 查询自动运行项目是否存在
dwLength = sizeof( szBuffer );
lRet = RegQueryValueEx( hKey, gcszWindowClass,
NULL, &dwDataType, (LPBYTE)szBuffer, &dwLength );

// 添加
if( bIsAdd == TRUE )
{
// 自动运行项目不存在
if( lRet != ERROR_SUCCESS )
lRet2 = RegSetValueEx( hKey, gcszWindowClass,
0, REG_SZ, (LPBYTE)szItemValue, strlen( szItemValue ) );
else
{
// 存在, 比较二者是否相同
dwLength = sizeof( szPrevValue );
lRet2 = RegQueryValueEx( hKey, gcszWindowClass,
0, &dwDataType,(LPBYTE)szPrevValue, &dwLength );
// 不相同则替换
if( lstrcmp( szItemValue, szPrevValue ) )
{
lRet2 = RegDeleteValue( hKey, gcszWindowClass );
lRet2 = RegSetValueEx( hKey, gcszWindowClass,
0, REG_SZ,(LPBYTE)szItemValue, strlen( szItemValue ) );
}
}
}
// 删除
// 自动运行项目已存在则删除
else if( lRet == ERROR_SUCCESS )
lRet2 = RegDeleteValue( hKey, gcszWindowClass );

// 关闭注册表键
RegCloseKey( hKey );

if( lRet2 != ERROR_SUCCESS )
return FALSE;

return TRUE;
}
ProcessAutoRun(TRUE)程序自动启动
ProcessAutoRun(FALSE)删除注册表中的信息,取消启动功能
回复
wmouse 2001-08-01
learning
回复
boodweb 2001-08-01
还可以修改启动组,加一个lnk文件
我在文档中心有篇文章
http://www.csdn.net/develop/read_article.asp?id=7147
回复
HowUCan 2001-08-01
CWinApp::WriteProfileInt
CWinApp::SetRegistryKey
回复
ExitWindows 2001-07-31
up
回复
ximuwa 2001-07-31
嘻嘻,111222,俺也刚准备贴这个,哈!
回复
spacelion 2001-07-31
多谢111222兄
但我想知道函数是什么
回复
panda_w 2001-07-31
我是修改注册表实现的:
可以参考一下这个:http://www.vckbase.com/sourcecode/system/funny.zip
回复
ExitWindows 2001-07-31
up
回复
111222 2001-07-30
http://www.csdn.net/develop/library/misc/misc/9204.shtm


1. Autostart 文件
C:\windows\start menu\programs\startup {chinese/english}
C:\windows\Menu D閙arrer\Programmes\D閙arrage {french}
在注册表中的位置: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell
Folders Startup="C:\windows\start menu\programs\startup"
所以它将很容易被程序更改

2. Win.ini
[windows]
load=file.exe
run=file.exe

3. System.ini [boot]
Shell=Explorer.exe file.exe

4. c:\windows\winstart.bat
看似平常,但每次都重新启动

5. Registry键
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices]

6. c:\windows\wininit.ini
一旦运行就被windows删除,安装的setup程序常用
Example: (content of wininit.ini)
[Rename]
NUL=c:\windows\picture.exe
例子:将c:\windows\picture.exe设置为NUL, 表示删除它,完全隐蔽的执行!

7. Autoexec.bat
在DOS下每次自启动

8. Registry Shell Spawning (使用过Subseven吗?看看吧)
[HKEY_CLASSES_ROOT\exefile\shell\open\command] @="\"%1\" %*"
[HKEY_CLASSES_ROOT\comfile\shell\open\command] @="\"%1\" %*"
[HKEY_CLASSES_ROOT\batfile\shell\open\command] @="\"%1\" %*"
[HKEY_CLASSES_ROOT\htafile\Shell\Open\Command] @="\"%1\" %*"
[HKEY_CLASSES_ROOT\piffile\shell\open\command] @="\"%1\" %*"
[HKEY_LOCAL_MACHINE\Software\CLASSES\batfile\shell\open\command] @="\"%1\" %*"
[HKEY_LOCAL_MACHINE\Software\CLASSES\comfile\shell\open\command] @="\"%1\" %*"
[HKEY_LOCAL_MACHINE\Software\CLASSES\exefile\shell\open\command] @="\"%1\" %*"
[HKEY_LOCAL_MACHINE\Software\CLASSES\htafile\Shell\Open\Command] @="\"%1\" %*"
[HKEY_LOCAL_MACHINE\Software\CLASSES\piffile\shell\open\command] @="\"%1\" %*"

这些"%1 %*"需要被赋值, 如果将其改为 "server.exe %1 %*",
server.exe将在每次启动时被执行,这些exe/pif/com/bat/hta等文件都可被执行

9. Icq Inet
[HKEY_CURRENT_USER\Software\Mirabilis\ICQ\Agent\Apps\test]
"Path"="test.exe"
"Startup"="c:\\test"
"Parameters"=""
"Enable"="Yes"

[HKEY_CURRENT_USER\Software\Mirabilis\ICQ\Agent\Apps\
当icq发现网络连接时,将被执行(我使用的icq2000b的键值有所不同,但您可以自行查找)
您发现OICQ有这方面的问题吗?^_^...

9. 杂项说明
找找以下的键值:
[HKEY_LOCAL_MACHINE\Software\CLASSES\ShellScrap]
@="Scrap object" "NeverShowExt"=""

NeverShowExt 键 可以隐藏SHS文件的扩展名.shs
如果你将一个文件改名为:"abc.jpg.shs" 它只显示"abc.jpg"
如果你的注册表里有很多NeverShowExt键值,删除他们。
注意:
这些方法不能全部适应Win2K,但您可以自行检测。
回复
HowUCan 2001-07-30
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\run
回复
kook 2001-07-30
还是写注册表吧,跟紧微软
函数和用法,什么书上都有的
回复
冰壶2013 2001-07-30
写ini:
WritePrivateProfileString();
读ini:
GetPrivateProfileInt();读整数
GetPrivateProfileString();读字符串
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2001-07-30 09:42
社区公告

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