|
Since 'maximum count is set to 1' during semaphore initialization, when semaphore is released its count is increased to 1 only. Not beyond (is this true?). So n number of releases shall keep maximum count 1. And next wait shall decrement by 1 and thus block.
What I observed is : If i release same semaphore multiple times, I cannot wait on that semaphore in a single wait call.
|
|
|
|
|
|
Hello All,
I am registering an ActiveX as follows:
CString ocxFile = L" /s \"" + ocxFile + L"\"";
HINSTANCE hInstance = ::ShellExecute(NULL, L"open", L"regsvr32.exe", ocxFile, NULL, SW_HIDE);
It works fine when user has admin rights . If user does not have admin rights then it can not register. Any solution of it ?
I am developing in XP and testing in xp and win7
Thanks,
Rahul
|
|
|
|
|
Registering an OCX is actually creating a few registry entries.
This requires admin rights by default unless the permission for the registry keys have been changed.
This is a good security feature.
|
|
|
|
|
Any way to give those permissions like showing UAC which will ask for an admin password.
If UAC is the solution then how to show UAC ?
Thanks,
Rahul
|
|
|
|
|
Take a look at the link I've provided to you in my other post. You need to specify this in the manifest file.
“Follow your bliss.” – Joseph Campbell
|
|
|
|
|
Thanks Rajesh!
I am looking into it.
|
|
|
|
|
Go to Project Properties -> Configuration Properties -> Linker -> Manifest File .
Change UAC Execution Level entry to requireAdministrator .
|
|
|
|
|
Thanks Superman & Rajesh,
It worked but my applicaiton stores some data in applicationData folder.
So if I use UAC then it uses applicaitonData folder of administrator account.
There should be some way to use it's own application folder.
I want this because my application is user specific so I use application data folder as a storage place. But by using UAC normal user's data is getting store inside administrators application data.
To retrieve application data folder I am using
SHGetSpecialFolderPath(0, strPath, CSIDL_APPDATA, FALSE);
which is giving admin's aplication data folder after using UAC.
|
|
|
|
|
I wish there should be some way to mark more than one answer as a Solution.
Your answer also deserve to be selected as "Solution". Sadly, I could not
|
|
|
|
|
You cannot execute this without running it as an administrator. Your application needs administrator privileges[^].
“Follow your bliss.” – Joseph Campbell
|
|
|
|
|
Is there any way to change UAC only for few statements of code and after those statements, application will run in normal UAC.
|
|
|
|
|
rahul.kulshreshtha wrote: Is there any way to change UAC only for few statements of code and after those statements, application will run in normal UAC.
Take a look at this article: Riding the Vista UAC elevator, up and down[^]
From the article: If a non-elevated process needs to start an elevated one, all it has to do is call the ShellExecuteEx() API and supply the "runas" verb as one of its parameters. The source code of this article contains the function RunElevated() that does just that...
“Follow your bliss.” – Joseph Campbell
|
|
|
|
|
Thanks Rajesh,
I studied that example and I used ShellExecuteEx() API and that worked. But still I am surprised why MS does not have UAC at statement level.. they are setting access level at process level. ShellExecuteEx delegate execution to Shell extensions. There may be requirements like "copying some file to restricted area" then how we can handle that only read/write should have a Elevated access and other parts of code should run as a limited access.
After reading Riding the Vista UAC elevator, up and down[^], I found that to change access level, developer was again restarting the application with different verbs in function "RunMyself" and hence changing the access level of whole process. But this can not be a practical scenario because practically we don't want to restart application again and again while we were in middle of some process. For example, I may want to read some registry values from HKLM from a non-admin account. So what can be the solution, I can not use ShellExecuteEx or "runas" verb here. Also I don't want to restart the exe/process in admin mode because other threads may be doing some other work. Please reply me if you know any way for this. I am hungry for more & more knowledge.
Anyways! my work was done in Win7. Now I am going to check if it works for a non-admin user in xp.
|
|
|
|
|
I don't know why but my one PC is showing "RunAs" dialog while other does not show.
I am using XP SP2 in both. Both are having multiple accounts. Both are running "Secondary Logon service". I tested in both users admin and limited. Any guess what can be the problem ?
|
|
|
|
|
Sorry, I could have only guessed that the secondary logon service is disabled in one (which you say is enabled). Look into other things, and let me too know if you figure it out.
“Follow your bliss.” – Joseph Campbell
|
|
|
|
|
Could you just call the register function directly?
HRESULT RegisterDLL(const char *dll_fspec)
{
HRESULT hr=E_FAIL;
HMODULE hMod=LoadLibrary(dll_fspec);
if (hMod)
{
HRESULT (__stdcall *pDllRegisterServer)(VOID);
pDllRegisterServer=(HRESULT (__stdcall *)(VOID))GetProcAddress(hMod,"DllRegisterServer");
if (pDllRegisterServer)
hr=pDllRegisterServer();
FreeLibrary(hMod);
}
return(hr);
}
|
|
|
|
|
I use setsockopt() to set the SO_RCVBUF returns -1 but WSAGetLastError returns 0.
Could anyone help?
|
|
|
|
|
help yourself, read the dos or post some code on which we can see what you have done (wrong) Press F1 for help or google it.
Greetings from Germany
|
|
|
|
|
wk_leo98 wrote: I use setsockopt() to set the SO_RCVBUF returns -1 but WSAGetLastError returns 0.
I am guessing something is wrong with your code (maybe you are setting it after connect/listen call which is not possible)... like Karsten said, can you show us some source code?
/M
|
|
|
|
|
I am sorry that the code i am using in wrapped in powerbuilder winsock.pbl (which is not either C or C++ code).
What i am wondering is ...why it is contradictory that winsock setsockopt() returns SOCKET_ERROR ( -1 ) but WSAGetLastError returns 0
Normally, in what situation will the setsocketopt of receive buffer resulting in error?
|
|
|
|
|
wk_leo98 wrote: I am sorry that the code i am using in wrapped in powerbuilder winsock.pbl (which is not either C or C++ code).
Sorry without code this would be just guessing into the blue sky... and there are many things that can go wrong if a 3rd party library/tool is involved. Maybe you can write your program in plain Winsock... or ask at a powerbuilder forum. Good luck!
/M
|
|
|
|
|
sorry for asking the question in the wrong forum.
I have posted the question in the powerbuilder forum, but haven't get any reply yet.
so, i am seeking help from forum. Really sorry for that >.<
Actually, we are using the PowerSocket Library.
http://www.level5software.net/documents/Pslib21.htm[^]
|
|
|
|
|
everyone know the difference of mswsock.dll vs Wsock32.dll?
|
|
|
|
|
The only thing that springs to mind is that your input values to the call are bad.
Set a breakpoint prior to th call and make sure the values are what you expect before issuing the call.
Without more specifics it is impossible to tell what is going wrong.Alan
|
|
|
|