|
ok, Which program are you talking about that wants to use ur kernel32.dll
if its ur kernel32.dll then you should gives its full path from where you are trying to load the dll. If its other applications that you want to load ur dll then simple copy ur kernel32.dll into system32 folder in ur windows directory.
Hope i answered ur question.
cheers.
The World is getting smaller and so are the people.
|
|
|
|
|
Kernel32 is very, very tightly linked to the version of Windows that it's installed with. You'll notice how whenever Microsoft make a patch to NTOSKRNL.EXE or CSRSS.EXE on Windows 2000/XP/Server 2003, they also ship a new version of kernel32.dll.
DO NOT DO THIS.
Normally you can redirect a DLL by copying it into the same directory as your application, but this won't work for kernel32.dll because that's where Windows starts your process: in the BaseProcessStart function in kernel32.dll (see Inside Windows 2000 [Solomon & Russinovich, MS Press]). Once a DLL is loaded, Windows will use the one it's already got rather than loading a different version with the same name (IIRC).
It might help if you explained the effect you're actually after - perhaps you're trying to inject some code into a different process? If you explain that, you might get more help.
|
|
|
|
|
good! here's what i want to do:
I have written a program which injects some code into a .exe or .dll file to make them depended on a additional dll! It works great with nearly every .exe and .dll file but my goal is to reach this result also with the kernel32.dll! So the problem is that i can't simply replace my kernel32.dll with the original one, because it's not allowed!
Is there a way at all?
|
|
|
|
|
hph wrote:
good! here's what i want to do:
I have written a program which injects some code into a .exe or .dll file to make them depended on a additional dll! It works great with nearly every .exe and .dll file but my goal is to reach this result also with the kernel32.dll! So the problem is that i can't simply replace my kernel32.dll with the original one, because it's not allowed!
Exactly: Kernel32.dll is part of the OS. You can't use another one. You'd only be able to do this by bundling the whole OS with your app. That's it. Also, several other DLLs won't work too, although they may seem to work at first sight: all related to winsock, printing, GDI, sound subsystem, DirectX, etc.
There is a place (sorry, I don't recall where right now) on MSDN that lists which DLLs you shouldn't mess with.
What you want could theoretically be accomplished with Linux, but not with Windows.
Trying to make bits uncopyable is like trying to make water not wet.
-- Bruce Schneier
By the way, dog_spawn isn't a nickname - it is my name with an underscore instead of a space. -- dog_spawn
|
|
|
|
|
|
What are you trying to acheive? Like somebody has already stated, kernel32.dll has to be linked tightly to a compiled win32 executable. Stubbing kernel32.dll I would imagine would be almost impossible.
|
|
|
|
|
Hi,
I have created a Named Pipe with a security descriptor that contains a NULL DACL to allow everyone to access the pipe on a server application and have also created a client application to connect to it. All works fine if client and server are on the same machine but i get a
0x0000052e Logon failure: unknown user name or bad password.
When using a remote client.
Anybody shed some light on this will be appreciated.
Ceri
|
|
|
|
|
Hi!
Need some help with a converting problem.
I will have my time in a buffer, but it complain on the converting. See code :
int main(){
char hour,minute, second;
int hh, mm, ss;
char buffer[10];
time_t times;
tm * ptm;
time ( × );
ptm = gmtime (×);
hh = ptm->tm_hour;
mm = ptm->tm_min;
ss = ptm->tm_sec;
hour = itoa(hh);
minute = itoa(mm);
second = itoa(ss);
strcpy(buffer, hour);
strcat(buffer, ":");
strcat(buffer, minute);
...
return 0;
}
the message that occur when I compile is
ctid.cpp: In function `int main()':
ctid.cpp:44: error: invalid conversion from `char*' to `char'
ctid.cpp:45: error: invalid conversion from `char*' to `char'
ctid.cpp:46: error: invalid conversion from `char*' to `char'
Thankful for your help
|
|
|
|
|
there is not x. it is ×
|
|
|
|
|
You gave all the lineno where the error is , but you forgot to number the line in ur code.
The World is getting smaller and so are the people.
|
|
|
|
|
|
Does any one know how to use the Mci32.ocx component or direct me to the documentation of the same.
regards,
Prakash.
The World is getting smaller and so are the people.
|
|
|
|
|
hello
i want to get the user info that is the information of domain name workstation and the user using the netbios api and NCB structure and name buffer structure please tell me how to use these structure in Netbios command can u give me the example
|
|
|
|
|
MSDN is full of examples. The one I am familar with is article Q118623. You can also Google the Net for tons more.
Five birds are sitting on a fence.
Three of them decide to fly off.
How many are left?
|
|
|
|
|
Hi!
I didn't know why did i get so many errors at compiling the source code.
I figured out that the problem is that i don't have the shell32.dll version 5.
I searched for it on the Net, but i didn't find it. From where to get it?
Thanks for your answer!
|
|
|
|
|
|
OK, but there are a lot of sdk files?
Which package do i need to download?
Thanks!
|
|
|
|
|
I have the following function
void CViewDBDlg::OnErrorAdodc1(long ErrorNumber, BSTR FAR* Description, long Scode, LPCTSTR
Source, LPCTSTR HelpFile, long HelpContext, BOOL FAR* fCancelDisplay)
{
// TODO: Add your control notification handler code here
}
I am not able to / I do not know the correct procedure to get the Description text from BSTR FAR*
Description. Please guys I need help on this immediately.
Nalini
|
|
|
|
|
use _bstr_t to deal with BSTR's
_bstr_t bstr(*Description);
now you can use the (LPCTSTR) operator on it to get a null terminated string.
CString str( (LPCTSTR) bstr );
|
|
|
|
|
Thanks a lot Paul. It works. Really apprecaite the help.
Nalini
|
|
|
|
|
How do I convert a non-wide string to wide format?
|
|
|
|
|
There are several macros for doing string conversion. In VC7 you would use CA2W(), in VC6 it is A2W()
lookup those macros in msdn and it will explain all.
|
|
|
|
|
I have been messing around with these with no luck...eg. mbstowcs and I get nothing...with T2W I get the following errors:
error C2065: '_lpa' : undeclared identifier
error C2440: '=' : cannot convert from 'char *' to 'int'
error C2065: '_convert' : undeclared identifier
what I am trying to convert is TCHAR* passed through a function to a WCHAR local variable in the function but nothing seems to work.
|
|
|
|
|
TCHAR * psz;
WCHAR * pwsz;
USES_CONVERSION; // if you are using VC++6 you need this
pwsz = T2W(psz);
|
|
|
|
|
Slight warning here: ATL 3.1 (shipped with VC 6.0) uses _alloc to allocate memory. For a large string, you can get stack overflows.
ATL 7.0 uses the heap to allocate memory for the new string.
In the general case, use mbstowcs or MultiByteToWideChar .
|
|
|
|