|
*grins broadly* Nah, it isn't nearly that bad...
You can do it all from user mode if you are careful:
#pragma comment(lib, "ntdll.lib")
typedef struct _PROCESS_PARAMETERS
{
ULONG AllocationSize;
ULONG ActualSize;
ULONG Flags;
ULONG Unknown1;
UNICODE_STRING Unknown2;
HANDLE InputHandle;
HANDLE OutputHandle;
HANDLE ErrorHandle;
UNICODE_STRING CurrentDirectory;
HANDLE CurrentDirectoryHandle;
UNICODE_STRING SearchPaths;
UNICODE_STRING ApplicationName;
UNICODE_STRING CommandLine;
PVOID EnvironmentBlock;
ULONG Unknown[9];
UNICODE_STRING Unknown3;
UNICODE_STRING Unknown4;
UNICODE_STRING Unknown5;
UNICODE_STRING Unknown6;
} PROCESS_PARAMETERS, *PPROCESS_PARAMETERS;
typedef struct _PEB
{
ULONG AllocationSize;
ULONG Unknown1;
HINSTANCE ProcessHinstance;
PVOID ListDlls;
PPROCESS_PARAMETERS ProcessParameters;
ULONG Unknown2;
HANDLE Heap;
} PEB, *PPEB;
typedef struct _PROCESS_BASIC_INFORMATION {
DWORD ExitStatus;
PPEB PebBaseAddress;
ULONG_PTR AffinityMask;
LONG BasePriority;
ULONG_PTR UniqueProcessId;
ULONG_PTR InheritedFromUniqueProcessId;
} PROCESS_BASIC_INFORMATION;
extern "C" __declspec(dllimport) DWORD __stdcall
NtQuerySystemInformation(
SYSTEMINFOCLASS SystemInformationClass,
PVOID SystemInformation,
ULONG SystemInformationLength,
PULONG ReturnLength
);
extern "C" __declspec(dllimport) DWORD __stdcall
NtQueryInformationProcess(
HANDLE ProcessHandle,
PROCESSINFOCLASS ProcessInformationClass,
PVOID ProcessInformation,
ULONG ProcessInformationLength,
PULONG ReturnLength
);
Combine the above with your typical CreateRemoteThread/etc injection hacks and bash on your parent's environment happily. Not exactly documented or anything, but hey.
(The hacked together definitions above are leftovers from a round of frustration some years ago when I concluded the only documented way to get your parent's process ID was via the abomination that is WMI. That InheritedFromUniqueProcessId member above is the parent process ID.)
--
-Blake (com/bcdev/blake)
|
|
|
|
|
This could be the start of an interesting kerna/el mode thread...
I'd also like to invent a PsSetJustDumpedThisModuleNotify() hack.
And what is a Lego anyway?
But...
Leo - if you're still with us... could you post a couple more details on how your procs interact - IPC doesn't have to be this scary. Really!
right - weekend looms - excuse me if I'm scarce...
Luckily, this is the OSSA forum, which has nothing to do with the increasingly ubiquitous desire to obtain a limited edition Bobble Head Bob, and our thread won't scroll off into the COMpost heap for a few days :P
|
|
|
|
|
This is going to sound insane, I know
Get your console app to write a batch file which contains only a SET statement. From the logon script, run the batch file that the console app just wrote (using CALL ). Your environment should now contain the value of the string.
|
|
|
|
|
Hi,
Can I restore the following . if yes then how.
1. a single public folder (Outlook)
2. calendar (Outlook)
3. address book (Outlook)
4. client configuration (outlook)
Also, can i take a backup from the M: drive created when I installed Exchange server..B'cause it contains the same data of exchange Server..
Thanks in advance
The chosen One
|
|
|
|
|
|
Thanks Mike for the info. Do u know any other link 4 taking back up for
1. a single public folder (Outlook)
2. calendar (Outlook)
3. address book (Outlook)
4. client configuration (outlook)
The chosen One
|
|
|
|
|
I want to draw object like drawing mouse cursor.
Explanation.
Window and button and etc object is drawn by GDI of system.
We can control and draw All window and Desktop.
And We can control mousecursor by SetCursor().
But I can't draw object like mouse cursor.
For example,,
I want to draw a nonmoving triangle like mouse cursor.
Can we control the above by GDI32 api ?
Please tell me.
|
|
|
|
|
LoadImage followed by DrawIconEx , I think.
|
|
|
|
|
Thank you for the reply.
I think that your method draws icon a part of window.
We can draw alike mouse cursor.But I can't draw mouse cursor.
for example,
When We push print-screen key ,We can't see mouse cursor in captured screen.
I think it is deep than GDI32.
By what method do system draw mouse cursor,too?
please tell me...
|
|
|
|
|
How do you delete Windows event log files? I wrote a simple app that log events to a user specified log (ie. not system/application/security, but one that I created)..
I tried delete after disabling Events Services. But after restart, Windows restore the log files.
Anyone?
|
|
|
|
|
Whenever I map a drive by the "Map Network Drive" option
something goes wrong. The name of this drive appears in
blank, and the window with its folders is not opened. There
are, also, problems if I try to copy something to / from
this mapped drive (RAW file system).
This problem is over when the windows explorer is re-opened.
I know this is a old problem, but I still didn't found the
solution. The MSDN article doesn't work (KB817861). Anybody
can help me?
Thakns,
Moises.
|
|
|
|
|
Does anybody know of any docs on the cmd.exe shell? Official (MS) as well as non-official.
--
Stukas! Stukas im Visier!
|
|
|
|
|
|
That doesn't give me much on the actual script language. Mostly cmd.exe switches and how to enable completion.
--
Stukas! Stukas im Visier!
|
|
|
|
|
Sorry, I thought it did - I guess I only skim-read it
Just typing help lists the commands that the help program knows about. Of course help knows about itself:
C:\>help help
Provides help information for Windows XP commands.
HELP [command]
command - displays help information on that command. You probably want to look at least at help if and help goto .
|
|
|
|
|
And help for , help call and help exit as well. It's actually a surprisingly capable little language these days. Here's the contents of the which.cmd file in my tools path:
@echo off
setlocal enableextensions
if "%1" == "" (
echo usage: which ^<command^>
exit /b 1
)
if "%~x1" == "" (
call :pathext %1 %PATHEXT%
) else (
call :search %1
)
if %ERRORLEVEL% neq 0 echo %1 not found.
exit /b %ERRORLEVEL%
:pathext
:loop
call :search %1%2
if %ERRORLEVEL% equ 0 exit /b 0
shift /2
if not "%2" == "" goto loop
exit /b 1
:search
if not "%~f$PATH:1" == "" (
echo %~f$PATH:1
exit /b 0
) else (
exit /b 1
)
--
-Blake (com/bcdev/blake)
|
|
|
|
|
Ah yes, I see from help call that the parameter syntax has been extended to support different parameter expansions, and also to allow essentially a subroutine call into the same batch file.
Cunning use of the %PATHEXT% variable, there.
I must copy this to my Windows 2000 computer - the Platform SDK's where now requires Windows XP.
|
|
|
|
|
Heh, good catch. It was exactly due to where.exe being broken that I wrote it.
--
-Blake (com/bcdev/blake)
|
|
|
|
|
I just set up a win2k advanced server locally for my business to develop locally on, and I have set up a few websites on it. They are accessible via their allocated ports, e.g. http://server:88, http://server:89, etc.
At my old job, our sysadmin used to set up website development environments for me but he was able to actually assign them a computer name, even though they were on the server, so I could, say, type in http://cmsdev/ for one website, and http://oursite/ for another site. Is this related to DHCP or anything? The server isn't the DHCP server, we have a router that does that, in case it's relevant. How to do I assign actual names to the development websites I create?
NATHAN RIDLEY
Web Application Developer
generalgherkin@yahoo.com
|
|
|
|
|
Mate, what I did here is alocate an IP address to each of my multiple websites. You can assign multiple IPs to a server then in your IIS Console in the properties in each of the websites you can allocate the ips out. I then use DNS to allocate a name to the ip...
|
|
|
|
|
Ah, ok. But, how do you allocate multiple IP addresses to the server? Is that something I have to set up via the DHCP server?
NATHAN RIDLEY
Web Application Developer
generalgherkin@yahoo.com
|
|
|
|
|
The DHCP server gives out IPs to your network, which tells them that they have a DNS, WINS server etc etc... Rather that using static IPs.
I sent you an email about the Multiple IP thing... It wasn't the yahoo one..
|
|
|
|
|
Got your email, thanks for that! I have set up multiple static IPs on the web server now. My last hurdle is now to try and allocate names to each of those IP addresses for each website. Haven't had any luck making that work yet, unfortunately...
NATHAN RIDLEY
Web Application Developer
generalgherkin@yahoo.com
|
|
|
|
|
In Internet Services Manager, create new applications for each site, and assign each a unique IP address using port 80. The IP address and port # combination must be unique for each site. In DNS provide a host (A) record for each IP address using the name of the application as the hostname.
"Some people are like Slinkies... not really good for anything, but you still can't help but smile when you see one tumble down the stairs."
|
|
|
|
|