api-call laeuft nur auf compilierendem rechner..?



  • jetzt funktioniert das bei mir (XP Home SP2) auch wunderbar, nicht jedoch auf anderen rechnern (meist identisches OS),

    Wie äußert sich das? "funktioniert nicht" ist eine mehr als unzureichende Fehlerbeschreibung.

    Versuchskaninchen erklaerte bei ihm bleibe alles voellig ruhig..

    Ähm, ja. Und was soll uns das sagen? Was heißt völlig ruhig? 😕

    1. Schon mal auf die Idee gekommen GetLastError auszuwerten?

    If the function fails, the return value is zero. To get extended error information, call GetLastError.

    🙄

    2. Warum nimmst du InitiateSystemShutdown und nicht wie üblich ExitWindowsEx?

    3. Schon mal ins PSDK geguckt:

    To shut down the local computer, the calling thread must have the SE_SHUTDOWN_NAME privilege.

    users can enable the SE_SHUTDOWN_NAME privilege on the computer they are logged onto,

    Ergo gehe ich davon aus, dass dieses Privileg erst aktiviert werden muss, was natürlich voraussetzt, dass der Benutzer dieses Privileg überhaupt hat. Aber das wirst du sehen, wenn du versuchst es zu aktivieren.



  • @ Marc,

    danke fuer deinen Tipp, das ich hatte ich auch schon vermutet..
    Da die meisten 'Versuchskaninchen' aber eh mit Admin-Rechten unterwegs sind und die Sache bei mir auch im User wie gewuenscht ausgefuehrt wird, wohl leider nicht das Problem, nahm ich dann an..

    gruss



  • tach Luckie, na wieder besser drauf? ^^

    Luckie schrieb:

    Wie äußert sich das? "funktioniert nicht" ist eine mehr als unzureichende Fehlerbeschreibung.

    funktionieren = einwandfrei arbeiten, ordnungsgemaess erfolgen/ablaufen
    jetzt ist deine Kombinationsgabe gefragt 😉

    Luckie schrieb:

    Ähm, ja. Und was soll uns das sagen? Was heißt völlig ruhig? 😕

    nun, nennen wir es mal so: Es funktioniert nicht.

    im Uebrigen denke ich, ging mein Problem (hinreichend) praezise aus meinem ersten Post hervor, oder muss ich folgendes (bereits obenstehendes) wirklich nochmal genauer erlaeutern?

    iowews schrieb:

    InitiateSystemShutdown() wird auf meinem (dem compilierenden) System korrekt aufgerufen & ausgefuehrt, gebe ich das Programm aber weiter, meldet mir jeder bisher zum Versuchskaninchen erklaerte bei ihm bleibe alles voellig ruhig.. [= (InitiateSystemShutdown) wird NICHT korrekt aufgerufen & ausgefuehrt]

    Luckie schrieb:

    1. Schon mal auf die Idee gekommen GetLastError auszuwerten?

    If the function fails, the return value is zero. To get extended error information, call GetLastError.

    nein, gute idee thx. ich hab bisher nur sehr wenig mit C bzw. geschweige denn der WinAPI gemacht.

    Luckie schrieb:

    2. Warum nimmst du InitiateSystemShutdown und nicht wie üblich ExitWindowsEx?

    warum nicht?

    Luckie schrieb:

    3. Schon mal ins PSDK geguckt:

    To shut down the local computer, the calling thread must have the SE_SHUTDOWN_NAME privilege.

    users can enable the SE_SHUTDOWN_NAME privilege on the computer they are logged onto,

    Ergo gehe ich davon aus, dass dieses Privileg erst aktiviert werden muss, was natürlich voraussetzt, dass der Benutzer dieses Privileg überhaupt hat. Aber das wirst du sehen, wenn du versuchst es zu aktivieren.

    zu den Rechten siehe obigen Beitrag, bzw meine darin deutlich werdenden empirisch gewonnenen Erfahrungswerte.
    ergo gehe (bzw ging) ich davon aus, dass das Problem woanders steckt.

    aber sicher, ausprobieren kann nicht schaden..

    Luckie schrieb:

    Aber das wirst du sehen, wenn du versuchst es zu aktivieren.

    ...wenn ich nur wuesste wo. 😕

    gruessse



  • Such einfach mal nach ExitWindowsEx, da wirst du sehen, wie man das Privileg aktiviert und wenn das fehlschlägt, weißt du, dass der Benutzer das Privileg nicht besitzt.



  • iowews schrieb:

    aber sicher, ausprobieren kann nicht schaden..

    Luckie schrieb:

    Aber das wirst du sehen, wenn du versuchst es zu aktivieren.

    ...wenn ich nur wuesste wo. 😕

    gruessse

    ok, wer dummm fragt kriegt keine antwort.

    also GetLastError() gibt 5 bzw ERROR_ACCESS_DENIED zurueck, und nach Aktivierung des SE_SHUTDOWN_NAME Privilegs (wie hier beschrieben) "funktioniert" endlich alles wie gewuenscht! 😉

    also danke Luckie fuer den Tipp!

    das einzige was mich noch beschaeftigt und falls noch jemand zeit hat: der MINGW (3.4.2) uebersetzt mir jetzt alles anstandslos, mit dem MSVC Toolkit 2003 bekomme ich aber folgende mir unerklaerliche Fehlermeldungen:

    C:[C++]\shutdown>cl shutdown.c /link advapi32.lib
    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
    Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
    
    shutdown.c
    shutdown.c(36) : error C2143: syntax error : missing ';' before 'type'
    shutdown.c(37) : error C2143: syntax error : missing ';' before 'type'
    shutdown.c(39) : error C2143: syntax error : missing ';' before 'type'
    shutdown.c(40) : error C2143: syntax error : missing ';' before 'type'
    shutdown.c(41) : error C2143: syntax error : missing ';' before 'type'
    shutdown.c(43) : error C2143: syntax error : missing ';' before 'type'
    shutdown.c(45) : error C2275: 'time_t' : illegal use of this type as an expression
            C:\USR_BIN\Microsoft Visual C++ Toolkit 2003\include\time.h(77) : see declaration of 'time_t'
    shutdown.c(45) : error C2146: syntax error : missing ';' before identifier 'current_time'
    shutdown.c(45) : error C2144: syntax error : '<Unknown>' should be preceded by '<Unknown>'
    shutdown.c(45) : error C2144: syntax error : '<Unknown>' should be preceded by '<Unknown>'
    shutdown.c(45) : error C2143: syntax error : missing ';' before 'identifier'
    shutdown.c(45) : error C2065: 'current_time' : undeclared identifier
    shutdown.c(48) : error C2065: 'fp' : undeclared identifier
    shutdown.c(48) : error C2065: 'datei' : undeclared identifier
    shutdown.c(48) : warning C4047: 'function' : 'const char *' differs in levels of indirection from 'int'
    shutdown.c(48) : warning C4047: '=' : 'int' differs in levels of indirection from 'FILE *'
    shutdown.c(49) : warning C4047: 'function' : 'const char *' differs in levels of indirection from 'int'
    shutdown.c(49) : warning C4047: '=' : 'int' differs in levels of indirection from 'FILE *'
    shutdown.c(50) : warning C4047: 'function' : 'FILE *' differs in levels of indirection from 'int'
    shutdown.c(53) : warning C4047: 'function' : 'FILE *' differs in levels of indirection from 'int'
    shutdown.c(53) : error C2065: 'last_time' : undeclared identifier
    shutdown.c(56) : warning C4047: 'function' : 'FILE *' differs in levels of indirection from 'int'
    shutdown.c(63) : error C2065: 'sperrzeit' : undeclared identifier
    shutdown.c(65) : warning C4047: 'function' : 'const char *' differs in levels of indirection from 'int'
    shutdown.c(65) : warning C4047: '=' : 'int' differs in levels of indirection from 'FILE *'
    shutdown.c(66) : warning C4047: 'function' : 'FILE *' differs in levels of indirection from 'int'
    shutdown.c(67) : warning C4047: 'function' : 'FILE *' differs in levels of indirection from 'int'
    shutdown.c(71) : error C2065: 'startzeit' : undeclared identifier
    shutdown.c(71) : error C2065: 'laufzeit' : undeclared identifier
    shutdown.c(84) : warning C4047: 'function' : 'char *' differs in levels of indirection from 'int'
    

    hier nochmal der jetzige Code.

    danke & gruss



  • Vermutlich fehlt ein aktuelles PSDK bzw. die Pfade sind noch nicht korrekt gesetzt...



  • hab meins von hier und auch die SetEnv.cmd im PSDK-Pfad (vor dem Kompilieren) ausgefuehrt...

    was ich mich auch noch frage: ist es so vorgesehen, dass ich dem MS-Compiler bzw Linker jedesmal zB die Advapi32.lib manuel bekannt machen muss?
    der MinGW besorgt sich das scheinbar alles aus der windows.h .. *kopfkratz*



  • *PUSH* 😞



  • Warum trägst du sie nicht im Options- / Konfigurationsdialog für das Projekt ein?



  • meinst du in Visual Studio ?

    ich hab halt nur den kostenlosen kommandozeilen-compiler "Visual C++ Toolkit 2003" 😕

    Micrososoft schrieb:

    The Microsoft Visual C++ Toolkit 2003 includes the core tools developers need to compile and link C++-based applications for Windows and the .NET Common Language Runtime.

    siehe vllt auch http://www.heise.de/newsticker/meldung/46613



  • Dan ladt Dir doch mal das ebenfalls kostenlose Visual Studio VC++ 2005 Express runter!


Anmelden zum Antworten