Implementi​ng Windows API Shell Execute call

I am trying to implement the Windows API call in LabVIEW named ShellExecute.  I have created the attached VI and I do not understand why it will not run correctly.  I am hoping that a user on the forum will see the problem and be able to suggest what is wrong.  Thank you for any help!
Attachments:
ShellExecute.vi ‏43 KB

Remove the quotation marks from the list of strings for your commands and it will work.
You also don't need them for the path, but there they don't seem to make a difference.
Also, instead of using a multi-line string, you can use a property node to get the string values of the ring and index array to pick the right string.
Try to take over the world!

Similar Messages

  • Re: Calling Windows API from Tool

    Hi,
    If it's only for the UserName on NT you can get the environment variable
    USERNAME.
    Hope this helps,
    Daniel Nguyen
    Freelance Forte Consultant
    Url : http://perso.club-internet.fr/dnguyen/
    Tim Sawyer a écrit:
    Hi George,
    I think you need to find out which Windows DLL implements the function and
    then wrapper it, using Forté's C Wrappering technique. I'm going to be
    doing this for the GetUserName() function, so we can login to our
    application automatically, using the username that the user logged into NT
    with.
    Hope this helps!
    Tim Sawyer
    PanCredit
    Leeds, UK.
    From: Aberdour George <[email protected]>
    Date: Thu, 6 May 1999 09:08:03 +1000
    Subject: Calling Windows API from Tool
    Hi,
    Does anyone know how to call Windows API calls such as WinExec,
    CreateProcess, RegSetValue, etc directly from TOOL ?
    These are just examples calls. I know some Windows API calls can be called
    via equivalent OperatingSystem method calls, but I would really like toknow
    if it is possible to call Windows API routines directly.
    Thanks in advance,
    George Aberdour
    TAFE NSW-
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>-
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>

    I'm afraid we have to make it work for NT, 95 and probably 98 too, so we're
    looking for something a bit more robust than the environment variable.
    Thanks,
    Tim Sawyer
    PanCredit
    Leeds, UK.
    From: Daniel Nguyen[SMTP:[email protected]]
    Reply To: [email protected]
    Sent: 07 May 1999 20:40
    To: Tim Sawyer
    Cc: '[email protected]'; '[email protected]'
    Subject: Re: Calling Windows API from Tool
    Hi,
    If it's only for the UserName on NT you can get the environment variable
    USERNAME.
    Hope this helps,
    Daniel Nguyen
    Freelance Forte Consultant
    Url : http://perso.club-internet.fr/dnguyen/
    Tim Sawyer a &eacute;crit:
    Hi George,
    I think you need to find out which Windows DLL implements the functionand
    then wrapper it, using Fort&eacute;'s C Wrappering technique. I'm going to be
    doing this for the GetUserName() function, so we can login to our
    application automatically, using the username that the user logged intoNT
    with.
    Hope this helps!
    Tim Sawyer
    PanCredit
    Leeds, UK.
    From: Aberdour George <[email protected]>
    Date: Thu, 6 May 1999 09:08:03 +1000
    Subject: Calling Windows API from Tool
    Hi,
    Does anyone know how to call Windows API calls such as WinExec,
    CreateProcess, RegSetValue, etc directly from TOOL ?
    These are just examples calls. I know some Windows API calls can be
    called
    via equivalent OperatingSystem method calls, but I would really like toknow
    if it is possible to call Windows API routines directly.
    Thanks in advance,
    George Aberdour
    TAFE NSW-
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>

  • Calling Windows API From Forms.

    For example, how can i call the MessageBoxA function from user32.dll whilst working in an Oracle Forms Application.
    Thank you.

    You shall have to use the WEBUTIL_C_API.Invoke_Int function for this purpose. Please see the following example that Locks the workstation.
    -- IMPORTANT
    -- Be sure to review the following My Oracle Support Note
    -- Doc ID: 285331.1 - "Exception When Calling PASCAL style Function Via WebUTIL_C_API"
    declare
      rc pls_integer;
         f_handle WEBUTIL_C_API.FUNCTIONHANDLE;
         args Webutil_c_api.parameterlist;
         winSysDir varchar2(255) := Client_Win_API_ENVIRONMENT.Get_Windows_Directory || '\system32\';
    --- IMPORTANT ---
    -- WEBUTIL_C_API CURRENTLY ONLY SUPPORTS CALLING C STYLE LIBRARIES, THEREFORE SOME WINDOWS LIBRARIES CANNOT BE CALLED.
    -- ADDITIONALLY, IT IS NOT RECOMMENDED THAT YOU ATTEMPT TO CALL FUNCTIONS WHICH REQUIRE ARGS.
    -- USE EXTREME CAUTION WHEN CALLING WINDOWS APIS.
    -- BE SURE TO THOROUGHLY TEST BEFORE MOVING TO PRODUCTION
    -- LOOK CLOSELY AT BOTH STABILITY AND MEMORY USAGE AS SOME CALLS
    -- MAY RESULT IN THE APPEARANCE OF A MEMORY LEAK.
    -- This call to USER32.DLL will reference the LOCKWORKSTATION function.
    -- If the current OS user does not have a password configured, the workstation may not lock.
    -- The Windows LockWorkStation function requires no args to be passed in.
    -- WebUtil expects something to be passed in. So an empty paramlist will be created.
    begin
    If webutil_clientinfo.get_operating_system LIKE 'Win%' Then          
         f_handle := WEBUTIL_C_API.register_function(winSysDir||'user32.dll','LockWorkStation');
         args := WEBUTIL_C_API.create_parameter_list;          
    If the function succeeds, the return value is nonzero. Because the function executes asynchronously,
    a nonzero return value indicates that the operation has been initiated. It does not indicate whether
    the workstation has been successfully locked.  If the function fails, the return value is zero.
        http://msdn.microsoft.com/en-us/library/aa376875(v=VS.85).aspx
         rc := WEBUTIL_C_API.Invoke_Int(winSysDir||'user32.dll','LockWorkStation',args);     
    End if;
      WEBUTIL_C_API.Destroy_Parameter_List(args);
      WEBUTIL_C_API.Deregister_Function(f_handle);               
      SYNCHRONIZE;
    end;

  • Dereferenc​ing a pointer from a Windows API call within labview

    I was looking into using the CreateFile windows API funciton within a labview project I'm working on.  I found some C code to do essentially what I want to do with this fuction (c code and details are within the attached VI).  Unfortanatly its return type is a pointer to a pointer and I got a bit
    lost when I looked into how to dereference this pointer to a value.   By
    the way WinBase.h defines INVALID_HANDLE_VALUE as:
    #define INVALID_HANDLE_VALUE ((HANDLE)(LONG_PTR)-1)
    Essentially I need to detect when CreateFile returns INVALID_HANDLE_VALUE to feed into a larger labview program I'm working on.
    So is it possilble to dereference this pointer or should I be looking for another way of getting the same result?
    Attached is the basic mechanism I worked up - the dereferencing block is disabled because it doesn't work.  I looked into the memblock() (CIN function) to do the dereferencing but couldn't find all the pieces to that puzzel yet.
    Thanks for your help,
    Christopher
    Attachments:
    File IO - is file open3-GetValueByPointer.vi ‏18 KB

    Just use "open/create/replace" file in LabVIEW. It should return an error if the file is already open. Just check for that error. If it isn't already open, yes it will open it, but just close it right after.
    CLA, LabVIEW Versions 2010-2013

  • Creating a window through a DLL called through CLFN

    Hi, sorry if this is a relatively simple problem but I've been unable to find proper results after a couple hours or so of searching.
    My group is interacting wtih a DLL that requires a window to draw to. We tried drawing directly to a LabVIEW window (using the FindWindow function through the Windows API), however while that worked we were unable to save the drawn image (the Front panel-> export image invoke node wouldn't save the drawn image). 
    So, what we did was write some C code and make a wrapper DLL that creates a window to draw to through the CreateWindow function, which we would then export to our main vi (less than ideal, but that's another problem). However, when we call up this wrapper DLL via the CLFN, it won't create the window.  Windows doesn't throw an error, it just won't instantiate the window at all and the function returns an error that the window was never created. The reason I'm posting this problem here instead of a general C++ forum is because we've tested out this wrapper DLL via a test project that imports the DLL and it works fine.
    This is how I'm setting up the window. I pass the LabVIEW Window found via the FindWindow function in as hInst (sorry for the formatting, I tried the HTML <code> tag and the board doesn't seem to accept it):
    int initializeWindow(HINSTANCE hInst)
        // Initialize global strings
        LoadString(hInst, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
        LoadString(hInst, IDC_WINDOW_CLASS, szWindowClass, MAX_LOADSTRING);
        MyRegisterClass(hInst);
        // Perform application initialization:
        if (!InitInstance (hInst, 1))
            return 0;
        return 1;
    ATOM MyRegisterClass(HINSTANCE hInst)
        WNDCLASSEX wcex;
        wcex.cbSize = sizeof(WNDCLASSEX);
        wcex.style            = CS_HREDRAW | CS_VREDRAW | CS_BYTEALIGNCLIENT;
        wcex.lpfnWndProc    = WndProc;
        wcex.cbClsExtra        = 0;
        wcex.cbWndExtra        = 0;
        wcex.hInstance        = hInst;
        wcex.hIcon            = LoadIcon(hInst, MAKEINTRESOURCE(IDI_UVIEW));
        wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
        wcex.hbrBackground    = (HBRUSH)(COLOR_WINDOW+1);
        wcex.lpszMenuName    = MAKEINTRESOURCE(IDC_UVIEW);
        wcex.lpszClassName    = szWindowClass;
        wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
        return RegisterClassEx(&wcex);
    BOOL InitInstance(HINSTANCE hInst, int nCmdShow)
       hwnd = CreateWindow(szWindowClass, szTitle, WS_VISIBLE | WS_DLGFRAME |  SS_BLACKRECT,
          0, 0, X_WINDOW_SIZE, Y_WINDOW_SIZE, NULL, NULL, hInst, NULL);
       if (hInst == NULL)
            MessageBox(hwnd, TEXT("Problem making instance"), TEXT("ERROR"),0);
            return FALSE;
       if (!hwnd)
          MessageBox(hwnd,TEXT("Problem making window"),TEXT("ERROR"),0);
          return FALSE;
       ShowWindow(hwnd, nCmdShow);
       UpdateWindow(hwnd);
       return TRUE;
    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
     // Standard WndProc implementation.. probably not worth posting all the code unless necessary
    Does anyone see an obvious problem? Or something I should try?
    Thanks in advance!
    Message Edited by wgerard on 05-16-2010 12:18 AM

    I can be short about that. A Windows HINSTANCE is NOT a HWND by a long stretch. The first is a module handle and the second is ... well yes a window!
    FindWindow() returns a HWND and you can use that as parent handle for another window, but you can not use it as HINSTANCE ever.
    To get at the HINSTANCE for registering new window classes you will need to extract that somehow from the HWND, probably by something like GetWindowLongPtr(.., GWLP_HINSTANCE, ..) or something similar.
    But you won't be able to retrieve your own resources from that instance, because it is the instance for the LabVIEW executable, not your DLL.
    Message Edited by rolfk on 05-16-2010 10:31 AM
    Rolf Kalbermatter
    CIT Engineering Netherlands
    a division of Test & Measurement Solutions

  • LV memory leak - How to use windows API SetProcessWorkingSetSize (from Kernel32.dll)

    Hi fellow LV'ers
    Okay - this is a bit tricky, but i'll try and explain the problem, then ask for the solution, because it may be that someone knows a better way to deal with this.. might get a bit long, sorry - if a solution comes up this will enable all of us to make more memory efficient LV code so please read on..
    Here is the deal:
    When building even a very simple LV executable, looking at the windows task manager will yield a rather large amount of memory allocated for such a small program - and the only way to free this up is by physically clicking the windows minimize button, then suddenly the amount drops to only a few MB and upon maximizing the window again the memory consumption will increase somewhat again, but for a simple VI build to an exe this move may change the consumption from +70MB to less than 15 MB.. This is irregardless of the code you put in the VI, so no coding example in this post as it is how LV works - you can even test it with the development environment - look at the task mgr and check LabVIEW's memory consumption, minimze ALL open NI windows incl project explorer etc, and you will see a significant decrease in memory usage even after maximizing again.. This has annoyed me since day one, but since RAM is a near zero cost these days it is not something I stay awake at night to think about.. However - I have moved into the "publish to web" tools now, wanting to do a remote monitoring part for my application for my customers to experience increased usability from the software i sell them..
    All is well, publishing is really easy (i use the monitor function, NOT the embeded, as customers need not have Labview RunTimeEngine installed, because they might look at it from a non RTE supported platform such as a mobilephone web browser)
    Everything is working fine also for the build application. However - I have noticed that once users start to remote monitor the running application - memory consumption of the running LV application starts to increase - and it keeps doing so - to such an extend that you can drain the computer complete and run off the cliff with a windows error... This is off course not very productive for me, being specialized in measurement applications that usually runs for a long period of time - I initially thought that I had done some poor programming in the VI used to display on the webpage - but it turns out that I can reproduce this behaviour with a simple boolean on an empty front panel..
    NI support has been informed, and they admit there is a problem, but so far solutions from them has been a bit too exotic for my taste, and thus I'm seeking the help of fellow LV programmers...
    You see - The method to solve the increasing memory consumption, is the exact same as mentioned above..minimize the application running with the "minimize" button and all memory will be freed, as soon as you maximize the application and users are viewing it remotely, the memory usage raises again, and history repeats... As previously mentioned, minimizing the window via normal LV calls to property nodes does not yield the same result, nor does a request deallocation of a VI(When you profile a project, there are no VI's increasing in memory, it is the LV process it self doing it) 
    After many many hours googling I stumbled upon this:
    http://support.microsoft.com/?kbid=293215
    I believe trimming the process with SetProcessWorkingSetSize would solve this problem, and now I would really like to be able to do this in my program, so that users are not forced to minimize the program every X hour depending on their system size...
    However - I have absolutely NO experience in calling windows API from LV, i need someone with that knowledge to provide an example of how to call this.. I've looked at examples on how to do calls to windows API - there is an example in this forum with some llb's in it, and I have gained a fair understanding of how parameters are passed between the calls, but none of those include the "hProcess" handle that is apparently needed for this specific winAPI call to work - Anyone in this forum with the knowledge on how to obtain this handle from a VI, if at all possible, and could provide an example VI for me to use - or even better , someone with the knowledge of how to do this within LV it self??
    Your help is much appreciated
    Best Regards
    Jacob
    LV8.6.1 patch something
    Win XP 
    Solved!
    Go to Solution.

    Hi Enrico
    Finally I can give something to the community that has given me so much  :-)
    The "official" statement is that "yes we know it is a problem".. Not sure what that will do to the future.. 
    I have the problem on 8.6.1 as well  - and in fact it is a general LV problem, that I first time reported to NI with LV8.2 as I was pissed by the fact that even the smallest exe file would consume + 50MB of memory until you manually minimized the window. Well - thanks to the feedback from Cosmin I seem to have solved the problem.
    I most warn that having started to "empty process" once in a while has led to occasional program crashes in the lethal "app.exe performed an illegal action and is closed" windows dialog - however what I did was to move the webserver to a seperate exe file and then communicate the data that I want to use via datasocket in a cluster.. It works like a charm and I simply stall the single thread that the webserver is running when ever the empty process is called and I have not seen a crash since then.. (the initial implementation was done in the main app with 4 parallel loops running, and I guess that was a disaster waiting to happen)
    Either way - what I have done is made a VI that at a user defined interval calls the empty process, simply by getting the .exe name from the task manager of the calling program - it is simple and very effective. I call it every 5 minutes - needless to say that flushing too often will most likely kill performance of the system. I have not noticed problems with VM - are you sure you are not storing large arrays or moving around copies of data not used frequently?
    For future reference to this forum, it is attached here including the .dll required to call - it is a LV8.6.1 file as I have not had the time to yet again test every single function of my program for new problems that could occur with upgrading to LV2009 
    I hope this solves your problem..
    best regards
    Jacob
    www.10EaZy.com 
    Attachments:
    EmptyProcess.zip ‏32 KB

  • How to refresh the text which is display by windows API function 'findwindow' 'getdc' 'textout'!

    i use the windows api function to dynamelly display text on the frontpanel ,it successed ,but when you move the scrollbar to the left ,right ,top ,bottom,the text will be disappear!! i think it is a very difficulteed problem .in my around ,no one can do! who can help me!
    Attachments:
    textrefresh.vi ‏21 KB
    auto_appear_scroll.vi ‏126 KB

    Very cool!
    It looks like you are using the same functions that LV uses to refresh the screen. Thos functions only let you update within the window you specify. This is why your updates stop at teh edge of the window.
    Normally LV will watch the scroll bar position and re-paint the screen to reflect an scroll bar postion changes. Since you are by-passing LV, you can not rely on LV to refresh your screen when the scroll bars move.
    At this point I can offer two suggestions.
    1) Continue with the approach you started and start adding all of the code required to watch the scroll bars and re-paint as indicated.
    or
    2) Look into the LV Picture control. Based on what you have done using dll calls I would guess that you could probably figure how to do the
    same thing using a picture control. The Picture (being a LV native object) is fully supported by LV so the scrolling work is already done and working. The picture control will let you draw lines, insert text, etc. Take a look at the "Robot Arm" example. It should get you started.
    Finally, the Picture control is pure "G" so it should be platform independent.
    Otherwise let me commend you on your example. You say no one else where you are can do what you have done. After looking at your example, I am not suprised. There are few people in the world that can do what you have done.
    Great work!
    Ben
    Ben Rayner
    Certified LabVIEW Developer
    www.DSAutomation.com
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • Windows API help files (Installation question)

    I've been working in LabWindows/CVI for a few weeks, and have added some API calls.  They work fine.  However, when I go to Help/Windows API, I get the following message:
    "The Win32 API documentation has not been installed.  You can install the documentation from the LabWindow/CVI Platform DVD."
    I have the Developer's suite DVDs, and ran the installer on the first, selected a custom install of LabWindows/CVI and saw that all the help files were installed, as were all the Windows API support files.  In fact, the only things which weren't installed were the wizards for VS 200x.  I tried installing the MSDN files, which is a bit of a help (I can go search on it), but, it's a bit big and slow compared to a normal help file.
    What am I missing to install this?

    Hi Steve,
    There was a problem with the MSDN help installer that shipped with VS 2009. It installs the help correctly, but CVI 2009 is not able to link to them because of a registry incompatibility. You have a couple of possible workarounds:
    a) if you have CVI 9.x, and you still have the "MSDN Library Documentation" DVD that came in that package, you should install it and the help link from CVI 2009 should then work.
    b) or you can simply get the same help online. Just browse to msdn.microsoft.com and enter the name of the function that you want to get for.
    Luis

  • Accessing the Windows API

    All,
    We're trying to wrap the windows API PostMessageA method using a Forte
    C Project library.
    I would like to have some detailed discussions with anybody who has done
    this or wrapped other
    windows API calls.
    We've worked around this by creating a C DLL which provides an
    interface to PostMessageA,
    but the better solution is to call the API directly.
    Thank you for your help,
    Keith Kroeger

    Yes, we tried this, $top=10&$skip=0 works for the following url
    https://<hostname>:30006/<subscription-id>/services/systemcenter/vmm/VirtualMachines?$top=10&$skip=0
    It is only when we add $expand=VirtualNetworkAdapters,
    the server returns the mentioned error response - 
    URL for which the server returns the 500 error -
    https://<hostname>:30006/<subscription-id>/services/systemcenter/vmm/VirtualMachines?$expand=VirtualNetworkAdapters&$top=10&$skip=0
    Can
    you point to the error logs for Windows Azure Pack and SPF ?

  • Invoking Help thro WINDOWS API

    hi folks,
    i have created a simple windows help using robohelp classic, when i tried to invoke the help file
    using the windows API. the help pops up but, it doesnt go the particular topic which i had created.
    i have written the following code in KEY_HELP trigger at form level:
    BEGIN
    WIN_API_SHELL.WINHELP('C:\EMP\EMP.HLP','3',WIN_API.HELP_CONTEXT,FALSE);
    EXCEPTION
         WHEN NO_DATA_FOUND THEN
         NULL;
    END;
    pl asvise how to go about further.
    thanks in advance !
    - senthil

    jsthomas,
    According to the Call DLL.vi shipping example that comes with LabVIEW 7 Express (I wrote that one), it will be much better to use a cluster in LabVIEW with some embedded clusters to get the memory to work out right. With the array, LabVIEW sends an additional 4 bytes of data for the array length that is getting passed and that is why the function is not working. I have modified your VI and it should work fine for you know. Refer to that shipping example for more information on what I have done. You should be able to modify the rest of your code upon inspection.
    Randy Hoskin
    Applications Engineer
    National Instruments
    http://www.ni.com/ask
    Attachments:
    Scrollbar.vi ‏152 KB

  • Shell executable file for Mac OS

    Hi ,
    Can you translate the batch file of windows in corresponding shell executable file for mac?
    The batch file actally conaints following statements:
    REM Launch script
    "C:\j2sdk1.4.0\bin\java.exe" -server -Xmx128M -DdaffodilDB_home=C:\DaffodilDB2_3\databases -cp "C:\DaffodilDB2_3\lib\DaffodilDB_Common.jar;C:\DaffodilDB2_3\lib\DaffodilDB_Server.jar" com.daffodilwoods.rmi.DaffodilDBServer "start" %1 %2 %3 %4 %5 %6 %7 %8 %9
    Thanks
    Ashish

    Thanks for your reply, but is it not seems to be the shell file for Linux or Unix? will it work in Mac system also? what would be the name of file where I save these lines?
    Thanks again

  • How can I insert watermark in printing document by ADOBE Reader through Windows API hooking?

    Hi. I'm now trying to hook windows API to insert watermark image when printing a document.
    It works fine with MS Word, PowerPoint, Notepad and Mspaint except Adobe Reader when I hooked EndPage API calls to insert watermark image.
    And all the progress looks work well from the log but i can't insert the watermark image.
    Then i tried it with another PDF viewer, it was work well except only ADOBE Reader.
    Any suggestions will be helpful to me.
    Thank you.

    Ask in the Reader forum. However, the process should be a property of the print driver for your printer, not Reader.

  • How do i invoke Windows APIs in JAVA??? Please help.

    Is there a way to invoke Windows APIs in Java??? Please help......Thankx

    Short answer, you don't. However, you should look at Java Native Interface (JNI) very closely. It will allow you to wrap the Win32 API calls so that Java can call your wrapper methods. Another side to it, although not necessarily related to your question is a JavaBeans to COM bridge that you may want to look into as well, though it's probably not going to be a solution for what you're wanting to do right now.

  • I want to  implement the Window autoresize in java swing application

    Hai...
    i want implement the window autoresize functionality in my java application. Same time i want to minimize and maximize my won window. and my java application develop one more frame at time disply in single window so i want disply the thaminal view formate in all frame
    Thanx to Advance.
    ARjun...

    ????????

  • Lion server file sharing issue with windows API read/write ini file (GetPrivateProfileString)

    Hello,
    I try to config lion server as file server for a windows application we use at work. All other computers are windows 7 or XP, lion server is the only mac. I choose lion server because it's size, quality and personal love of apple products.
    10.7.2 lion server's samba file sharing works almost perfectly with all my windows machines, I can copy, delete, modify any text files or office files without any issue, but the most important windows application for my business doesn't work with samba file sharing. After some digging, I found it is because windows program can't read or write INI file stored on lion share. Windows API GetPrivateProfileString always returns empty if the INI file is store on lion share.
    You can download a small application for read/write windows INI file from codeproject.com to test this problem:
    http://www.codeproject.com/KB/files/ini.aspx
    I can open/edit the in file using any text editor without any problem. The only problem is with those windows APIs. ACL is turned on for my lion share and assigned "delete" rights to samba users.
    I install samba3 on the same server; it works perfectly with windows API. My windows program also works. Looks like there is something wrong with lion server's sambax.
    I'd prefer to use built-in samba even I have samba3 working. Built-in samba is very immature right now, but considered how young it is, I will give apple some time to make it mature.
    Does anyone have same issue or knows how to fix it?
    Thanks,
    Michael.

    All the memory is fine. The server rarely if ever goes down when there are only around 10-12 users connected. When there are 20+ users connected and working heavily it goes down often. When I say working heavily, I mean they are transferring huge files to the SAN (100GB+), sometimes 5 at a time per user, and there are a bunch of others who are reading large video files at a minimum of 220MB/sec from the SAN.
    Though this worked on Snow Leopard without any issues, Lion just doesn't seem to be able to handle it. The odd thing is, on Snow Leopard there was only a single 1GB ethernet connection to a NAS system, whereas with Lion we have a much more powerful machine with a 6-port 10GB ethernet card and a 4 lane 8GB fiber card to a true SAN. You would think that the newer scenario with Lion would handle far more users with ease.
    So far, very disappointing with regards to Lion's file serving performance.

Maybe you are looking for